{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def hint(string):\n",
    "    return print(''.join(map(chr, map(lambda x: int(x, 16), string.split('.')))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Environment\n",
    "+ Pycharm\n",
    "+ python3.6\n",
    "+ networkx\n",
    "+ jieba\n",
    "+ numpy, pandas, matplotlib\n",
    "+ gensim"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ https://nlp.stanford.edu/pubs/see2017get.pdf\n",
    "+ https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf\n",
    "+ https://openreview.net/pdf?id=SyK00v5xx\n",
    "+ https://arxiv.org/abs/1409.0473\n",
    "+ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Background Knowledge"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q1. 简述自动摘要技术的三个应用场景？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答：\n",
    "1. 文章类标题\n",
    "2. 论文摘要\n",
    "3. 电影预告片\n",
    "4. 商品评论摘要"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hint('a.641c.7d22.5f15.64ce.ff1b.a.32.2e.20.89c2.70b9.62bd.53d6.ff1b.a.33.2e.20.65b0.95fb.ff1b.a.34.2e.20.6c47.62a5.6587.6863.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q2. 目前的摘要技术分为哪两类？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答：\n",
    "1. 说明性摘要：一般用于综述性文章。\n",
    "2. 资料性摘要：提现原文的具体内容。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hint('a.6458.8981.20.41.62.73.74.72.61.63.74.69.76.65.3a.20.91cd.65b0.6574.7406.4fe1.606f.a.62bd.53d6.20.45.78.74.72.61.63.74.69.76.65.3a.20.4ece.539f.6587.4e2d.63d0.53d6.90e8.5206.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q3. 目前实现自动摘要的难点在哪里？列出三点。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答：\n",
    "1. 段落太长有可能会导致段落信息记忆的损失；\n",
    "2. 缺乏标注训练数据；\n",
    "3. 缺乏摘要评估指标。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hint('a.31.2e.20.7f3a.4e4f.6807.6ce8.8bad.7ec3.6570.636e.ff1b.a.32.2e.20.57fa.4e8e.6587.672c.7406.89e3.ff0c.63d0.53d6.91cd.8981.5185.5bb9.96be.ff1b.a.33.2e.20.4eba.7c7b.5bf9.6587.672c.903b.8f91.654f.611f.ff0c.6458.8981.7ed3.679c.5bb9.9519.7387.4f4e.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Basic Technologies"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q4. 什么是PageRank？ PageRank 用在什么地方？用 $Latex$ 写出其方程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答： \n",
    " - PageRank: https://wizardforcel.gitbooks.io/dm-algo-top10/content/pagerank.html, Google专有的算法，用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。PageRank实现了将链接价值概念作为排名因素。\n",
    " - 公式：$$ PR(p_i) = \\frac{1-d}{N} + d \\sum_{p_j \\in M(p_i)} \\frac{PR (p_j)}{L(p_j)} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hint('a.31.2e.20.65b9.7a0b.3a.a.20.20.20.20.50.52.28.70.5f.69.29.20.3d.20.a.72.61.63.7b.31.2d.64.7d.7b.4e.7d.20.2b.20.64.20.5c.73.75.6d.5f.7b.70.5f.6a.20.5c.69.6e.20.4d.28.70.5f.69.29.7d.20.a.72.61.63.7b.50.52.20.28.70.5f.6a.29.7d.7b.4c.28.70.5f.6a.29.7d.a.32.2e.20.53c2.8003.ff1a.a.20.20.20.20.68.74.74.70.73.3a.2f.2f.77.77.77.2e.77.69.6b.69.77.61.6e.64.2e.63.6f.6d.2f.65.6e.2f.50.61.67.65.52.61.6e.6b.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q5. PageRank和TextRank的关系是什么，TextRank的背景原理是什么？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答：\n",
    "- 关系：TextRank是PageRank算法的变种，由PageRank算法改进过来的，用于文本关键字关键句的提取\n",
    "- 背景原理：（结合论文及链接https://www.zybuluo.com/evilking/note/902585）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "参考论文： https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.53c2.8003.8bba.6587.ff1a.20.68.74.74.70.73.3a.2f.2f.77.65.62.2e.65.65.63.73.2e.75.6d.69.63.68.2e.65.64.75.2f.7e.6d.69.68.61.6c.63.65.61.2f.70.61.70.65.72.73.2f.6d.69.68.61.6c.63.65.61.2e.65.6d.6e.6c.70.30.34.2e.70.64.66.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q6. 在存在大量原始文本以及该文本对应的摘要内容时，我们是否可以使用 Seq2Seq 进行生成？ Sequence2Sequence的原理是什么？ Attention的机制原理是什么？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Seq2Seq: 输入一个序列，输出也是一个序列，本质其实就是个Encoder-Decoder结构的网络。在Encoder中，将序列转换成一个固定长度的向量，然后通过Decoder将该向量转换成序列输出。\n",
    "- Attention机制：训练一个模型对输入进行选择性学习并在模型输出时将输出序列与之进行关联。\n",
    "- 参考内容：https://zhuanlan.zhihu.com/p/28054589"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Extractive, Abstractive \n",
    "+ Extractive是从文中找出关键信息，然后拼接进行结果输出\n",
    "    + 确定重要信息\n",
    "+ Abstracrtive: 依据文本的输入，生产单词（可能是新的单词）进行结果输出\n",
    "    + Seq2Seq的问题\n",
    "    + Transfomer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\gensim\\utils.py:1197: UserWarning: detected Windows; aliasing chunkize to chunkize_serial\n",
      "  warnings.warn(\"detected Windows; aliasing chunkize to chunkize_serial\")\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import jieba\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "import networkx\n",
    "import random\n",
    "import re\n",
    "\n",
    "from gensim.models import FastText\n",
    "from gensim.models.word2vec import LineSentence\n",
    "from functools import reduce\n",
    "from collections import Counter\n",
    "from scipy.spatial.distance import cosine\n",
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def transform(string):\n",
    "    sentence = re.split(r'[.。?？!！]', string)\n",
    "    pure_sentence = [re.sub(r'[^0-9A-Za-z\\u4e00-\\u9fa5]', '', i) for i in sentence]\n",
    "    cut_sentence = ''.join(sent for sent in pure_sentence)\n",
    "    return ' '.join(jieba.cut(cut_sentence))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "# test another transform\n",
    "def transform_2(data):\n",
    "    a = split_sentence(data)\n",
    "    b = get_sentence_list(a)\n",
    "    return b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['此外',\n",
       "  '自',\n",
       "  '本周',\n",
       "  '6',\n",
       "  '月',\n",
       "  '12',\n",
       "  '日起',\n",
       "  '除',\n",
       "  '小米',\n",
       "  '手机',\n",
       "  '6',\n",
       "  '等',\n",
       "  '15',\n",
       "  '款',\n",
       "  '机型',\n",
       "  '外',\n",
       "  '其余',\n",
       "  '机型',\n",
       "  '已',\n",
       "  '暂停',\n",
       "  '更新',\n",
       "  '发布',\n",
       "  '含',\n",
       "  '开发',\n",
       "  '版',\n",
       "  '体验版',\n",
       "  '内测',\n",
       "  '稳定版',\n",
       "  '暂不受',\n",
       "  '影响',\n",
       "  '以',\n",
       "  '确保',\n",
       "  '工程师',\n",
       "  '可以',\n",
       "  '集中',\n",
       "  '全部',\n",
       "  '精力',\n",
       "  '进行',\n",
       "  '系统优化',\n",
       "  '工作'],\n",
       " ['有人', '猜测', '这', '也', '是', '将', '精力', '主要', '用到', 'MIUI9', '的', '研发', '之中'],\n",
       " ['MIUI8',\n",
       "  '去年',\n",
       "  '5',\n",
       "  '月',\n",
       "  '发布',\n",
       "  '距今已有',\n",
       "  '一年',\n",
       "  '有余',\n",
       "  '也',\n",
       "  '是',\n",
       "  '时候',\n",
       "  '更新换代',\n",
       "  '了'],\n",
       " ['当然', '关于', 'MIUI9', '的', '确切', '信息', '我们', '还是', '等待', '官方消息']]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transform_2(df['content'][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "def split_sentence(string):\n",
    "    str1 = string.replace('\\r\\n', '').strip()\n",
    "    #str2 = str1.strip()\n",
    "    sentence = re.split(r'[.。?？!！]', str1)\n",
    "    pure_sentence = [i for i in sentence if i]\n",
    "    return pure_sentence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cut_sentence_to_words(sentence):\n",
    "    '''\n",
    "    words = []\n",
    "    sentence = re.sub(r'[^0-9A-Za-z\\u4e00-\\u9fa5]', '', sentence)\n",
    "    cut = jieba.cut(sentence)\n",
    "    for w in cut:\n",
    "        words.append(w)\n",
    "    return words\n",
    "    '''\n",
    "    sentence = re.sub(r'[^0-9A-Za-z\\u4e00-\\u9fa5]', '', sentence)\n",
    "    return [w for w in jieba.cut(sentence)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_sentence_list(sentences):\n",
    "    sentence_list = []\n",
    "    for sent in sentences:\n",
    "        words = cut_sentence_to_words(sent)\n",
    "        if len(words) > 0:\n",
    "            sentence_list.append(words)\n",
    "    return sentence_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "fpath = r'D:\\GitHub\\Data\\sqlResult_1558435.csv'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>author</th>\n",
       "      <th>source</th>\n",
       "      <th>content</th>\n",
       "      <th>feature</th>\n",
       "      <th>title</th>\n",
       "      <th>url</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>89617</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"...</td>\n",
       "      <td>小米MIUI 9首批机型曝光：共计15款</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623597.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>89616</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器，高通强调，不会因为只考...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"...</td>\n",
       "      <td>骁龙835在Windows 10上的性能表现有望改善</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623599.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>89615</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>此前的一加3T搭载的是3400mAh电池，DashCharge快充规格为5V/4A。\\r\\n...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"...</td>\n",
       "      <td>一加手机5细节曝光：3300mAh、充半小时用1天</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623601.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>89614</td>\n",
       "      <td>NaN</td>\n",
       "      <td>新华社</td>\n",
       "      <td>这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n</td>\n",
       "      <td>{\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j...</td>\n",
       "      <td>葡森林火灾造成至少62人死亡 政府宣布进入紧急状态（组图）</td>\n",
       "      <td>http://world.huanqiu.com/hot/2017-06/10866126....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>89613</td>\n",
       "      <td>胡淑丽_MN7479</td>\n",
       "      <td>深圳大件事</td>\n",
       "      <td>（原标题：44岁女子跑深圳约会网友被拒，暴雨中裸身奔走……）\\r\\n@深圳交警微博称：昨日清...</td>\n",
       "      <td>{\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",...</td>\n",
       "      <td>44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随</td>\n",
       "      <td>http://news.163.com/17/0618/00/CN617P3Q0001875...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      id      author                  source  \\\n",
       "0  89617         NaN  快科技@http://www.kkj.cn/   \n",
       "1  89616         NaN  快科技@http://www.kkj.cn/   \n",
       "2  89615         NaN  快科技@http://www.kkj.cn/   \n",
       "3  89614         NaN                     新华社   \n",
       "4  89613  胡淑丽_MN7479                   深圳大件事   \n",
       "\n",
       "                                             content  \\\n",
       "0  此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/...   \n",
       "1  骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器，高通强调，不会因为只考...   \n",
       "2  此前的一加3T搭载的是3400mAh电池，DashCharge快充规格为5V/4A。\\r\\n...   \n",
       "3    这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n   \n",
       "4  （原标题：44岁女子跑深圳约会网友被拒，暴雨中裸身奔走……）\\r\\n@深圳交警微博称：昨日清...   \n",
       "\n",
       "                                             feature  \\\n",
       "0  {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"...   \n",
       "1  {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"...   \n",
       "2  {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"...   \n",
       "3  {\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j...   \n",
       "4  {\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",...   \n",
       "\n",
       "                           title  \\\n",
       "0           小米MIUI 9首批机型曝光：共计15款   \n",
       "1     骁龙835在Windows 10上的性能表现有望改善   \n",
       "2      一加手机5细节曝光：3300mAh、充半小时用1天   \n",
       "3  葡森林火灾造成至少62人死亡 政府宣布进入紧急状态（组图）   \n",
       "4       44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随   \n",
       "\n",
       "                                                 url  \n",
       "0     http://www.cnbeta.com/articles/tech/623597.htm  \n",
       "1     http://www.cnbeta.com/articles/tech/623599.htm  \n",
       "2     http://www.cnbeta.com/articles/tech/623601.htm  \n",
       "3  http://world.huanqiu.com/hot/2017-06/10866126....  \n",
       "4  http://news.163.com/17/0618/00/CN617P3Q0001875...  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "news_content = pd.read_csv(fpath, encoding='gb18030')\n",
    "news_content.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['content'] = news_content['content']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.fillna('')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/体验版内测，稳定版暂不受影响），以确保工程师可以集中全部精力进行系统优化工作。有人猜测这也是将精力主要用到MIUI 9的研发之中。\\r\\nMIUI 8去年5月发布，距今已有一年有余，也是时候更新换代了。\\r\\n当然，关于MIUI 9的确切信息，我们还是等待官方消息。\\r\\n'"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['content'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/体验版内测，稳定版暂不受影响），以确保工程师可以集中全部精力进行系统优化工作',\n",
       " '有人猜测这也是将精力主要用到MIUI 9的研发之中',\n",
       " 'MIUI 8去年5月发布，距今已有一年有余，也是时候更新换代了',\n",
       " '当然，关于MIUI 9的确切信息，我们还是等待官方消息']"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "split_sentence(df['content'][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['此外',\n",
       " '自',\n",
       " '本周',\n",
       " '6',\n",
       " '月',\n",
       " '12',\n",
       " '日起',\n",
       " '除',\n",
       " '小米',\n",
       " '手机',\n",
       " '6',\n",
       " '等',\n",
       " '15',\n",
       " '款',\n",
       " '机型',\n",
       " '外',\n",
       " '其余',\n",
       " '机型',\n",
       " '已',\n",
       " '暂停',\n",
       " '更新',\n",
       " '发布',\n",
       " '含',\n",
       " '开发',\n",
       " '版',\n",
       " '体验版',\n",
       " '内测',\n",
       " '稳定版',\n",
       " '暂不受',\n",
       " '影响',\n",
       " '以',\n",
       " '确保',\n",
       " '工程师',\n",
       " '可以',\n",
       " '集中',\n",
       " '全部',\n",
       " '精力',\n",
       " '进行',\n",
       " '系统优化',\n",
       " '工作']"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cut_sentence_to_words(split_sentence(df['content'][0])[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'此外 自 本周 6 月 12 日起 除 小米 手机 6 等 15 款 机型 外 其余 机型 已 暂停 更新 发布 含 开发 版 体验版 内测 稳定版 暂不受 影响 以 确保 工程师 可以 集中 全部 精力 进行 系统优化 工作 有人 猜测 这 也 是 将 精力 主要 用到 MIUI9 的 研发 之中 MIUI8 去年 5 月 发布 距今已有 一年 有余 也 是 时候 更新换代 了 当然 关于 MIUI9 的 确切 信息 我们 还是 等待 官方消息'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transform(df['content'][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['tokenized_content'] = df['content'].apply(transform_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['环球网',\n",
       "  '综合',\n",
       "  '报道',\n",
       "  '据',\n",
       "  '美联社',\n",
       "  '6',\n",
       "  '月',\n",
       "  '19',\n",
       "  '日',\n",
       "  '报道',\n",
       "  '朝鲜',\n",
       "  '18',\n",
       "  '日',\n",
       "  '控诉',\n",
       "  '美国',\n",
       "  '日前',\n",
       "  '在',\n",
       "  '纽约',\n",
       "  '抢劫',\n",
       "  '赴',\n",
       "  '联合国',\n",
       "  '参加',\n",
       "  '会议',\n",
       "  '的',\n",
       "  '朝鲜',\n",
       "  '外交',\n",
       "  '代表团',\n",
       "  '要求',\n",
       "  '美方',\n",
       "  '就',\n",
       "  '此次',\n",
       "  '事件',\n",
       "  '向',\n",
       "  '朝方',\n",
       "  '做出',\n",
       "  '解释',\n",
       "  '并',\n",
       "  '道歉'],\n",
       " ['美国', '国土', '安全部', '发言人', '大卫'],\n",
       " ['拉',\n",
       "  '潘',\n",
       "  '18',\n",
       "  '日',\n",
       "  '对',\n",
       "  '朝方',\n",
       "  '的',\n",
       "  '指控',\n",
       "  '作出',\n",
       "  '回应',\n",
       "  '称',\n",
       "  '三名',\n",
       "  '涉事',\n",
       "  '朝鲜',\n",
       "  '公民',\n",
       "  '并非',\n",
       "  '驻',\n",
       "  '联合国',\n",
       "  '代表团',\n",
       "  '成员',\n",
       "  '三人',\n",
       "  '携带',\n",
       "  '的',\n",
       "  '文件',\n",
       "  '和',\n",
       "  '包裹',\n",
       "  '不',\n",
       "  '受',\n",
       "  '外交',\n",
       "  '豁免权',\n",
       "  '保护',\n",
       "  '必须',\n",
       "  '接受',\n",
       "  '检查'],\n",
       " ['报道',\n",
       "  '称',\n",
       "  '朝鲜外务省',\n",
       "  '发言人',\n",
       "  '18',\n",
       "  '日',\n",
       "  '表示',\n",
       "  '出席',\n",
       "  '在',\n",
       "  '纽约',\n",
       "  '举行',\n",
       "  '的',\n",
       "  '残疾人',\n",
       "  '权利',\n",
       "  '公约',\n",
       "  '缔约国',\n",
       "  '大会',\n",
       "  '的',\n",
       "  '朝鲜',\n",
       "  '代表团',\n",
       "  '16',\n",
       "  '日',\n",
       "  '在',\n",
       "  '回国',\n",
       "  '途中',\n",
       "  '在',\n",
       "  '纽约',\n",
       "  '肯尼迪',\n",
       "  '机场',\n",
       "  '遭到',\n",
       "  '抢劫'],\n",
       " ['在',\n",
       "  '该',\n",
       "  '机场',\n",
       "  '自称',\n",
       "  '是',\n",
       "  '美国',\n",
       "  '国土',\n",
       "  '安全部',\n",
       "  '人员',\n",
       "  '和',\n",
       "  '警察',\n",
       "  '等',\n",
       "  '20',\n",
       "  '余人',\n",
       "  '像',\n",
       "  '暴徒',\n",
       "  '一样',\n",
       "  '试图',\n",
       "  '从',\n",
       "  '持有',\n",
       "  '外交',\n",
       "  '文件',\n",
       "  '的',\n",
       "  '朝鲜',\n",
       "  '外交官',\n",
       "  '手中',\n",
       "  '抢夺',\n",
       "  '文件'],\n",
       " ['朝鲜',\n",
       "  '外交官',\n",
       "  '进行',\n",
       "  '了',\n",
       "  '顽强抵抗',\n",
       "  '但',\n",
       "  '这些',\n",
       "  '人',\n",
       "  '使用暴力',\n",
       "  '抢走了',\n",
       "  '外交',\n",
       "  '文件',\n",
       "  '后',\n",
       "  '逃跑'],\n",
       " ['美国',\n",
       "  '国土',\n",
       "  '安全部',\n",
       "  '发言人',\n",
       "  '拉',\n",
       "  '潘',\n",
       "  '回应',\n",
       "  '称',\n",
       "  '根据',\n",
       "  '美国国务院',\n",
       "  '提供',\n",
       "  '的',\n",
       "  '信息',\n",
       "  '官员',\n",
       "  '们',\n",
       "  '的确',\n",
       "  '收缴',\n",
       "  '了',\n",
       "  '三名',\n",
       "  '朝鲜人',\n",
       "  '携带',\n",
       "  '的',\n",
       "  '一些',\n",
       "  '媒体文件',\n",
       "  '和',\n",
       "  '包裹',\n",
       "  '但',\n",
       "  '他们',\n",
       "  '不是',\n",
       "  '朝鲜',\n",
       "  '驻',\n",
       "  '联合国',\n",
       "  '代表团',\n",
       "  '成员',\n",
       "  '不',\n",
       "  '享有',\n",
       "  '外交',\n",
       "  '豁免权'],\n",
       " ['拉', '潘说', '这些', '问题', '包裹', '不', '享有', '外交', '保护', '所以', '必须', '接受', '检查'],\n",
       " ['他',\n",
       "  '还',\n",
       "  '补充',\n",
       "  '说',\n",
       "  '三名',\n",
       "  '朝鲜人',\n",
       "  '试图',\n",
       "  '强行',\n",
       "  '带走',\n",
       "  '这些',\n",
       "  '文件',\n",
       "  '和',\n",
       "  '包裹',\n",
       "  '但',\n",
       "  '国土',\n",
       "  '安全部',\n",
       "  '工作人员',\n",
       "  '阻止',\n",
       "  '了',\n",
       "  '他们'],\n",
       " ['报道',\n",
       "  '还称',\n",
       "  '朝方',\n",
       "  '认为',\n",
       "  '美国',\n",
       "  '抢夺',\n",
       "  '朝鲜',\n",
       "  '外交',\n",
       "  '文件',\n",
       "  '是',\n",
       "  '对',\n",
       "  '朝鲜',\n",
       "  '不可',\n",
       "  '容忍',\n",
       "  '的',\n",
       "  '主权',\n",
       "  '侵犯',\n",
       "  '行为',\n",
       "  '极为',\n",
       "  '凶恶',\n",
       "  '的',\n",
       "  '挑衅',\n",
       "  '行为',\n",
       "  '朝鲜政府',\n",
       "  '予以',\n",
       "  '强烈',\n",
       "  '谴责'],\n",
       " ['拉', '潘', '表示', '这些', '攻击性', '报道', '和', '言论', '完全', '是', '朝方', '一面之词'],\n",
       " ['三名',\n",
       "  '朝鲜人',\n",
       "  '随后',\n",
       "  '被',\n",
       "  '释放',\n",
       "  '但',\n",
       "  '他们',\n",
       "  '坚持',\n",
       "  '要求',\n",
       "  '携带',\n",
       "  '被',\n",
       "  '扣押',\n",
       "  '的',\n",
       "  '物件',\n",
       "  '登机'],\n",
       " ['现在', '尚', '不', '清楚', '美国', '扣留', '物件', '的', '原因'],\n",
       " ['美国国务院', '尚未', '对', '此事', '作出', '解释', '仅', '表示', '具体情况', '正在', '调查', '中'],\n",
       " ['实习', '记者', '田', '新疆', '审稿', '聂鲁彬']]"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['tokenized_content'][201]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "tokeners = [w for l in df['tokenized_content'] for t in l for w in t]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "17061947"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(tokeners)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Counts the words occurence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "tokener_length = len(tokeners)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "tokener_counter = Counter(tokeners)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "frequency = {w : count / tokener_length for w, count in tokener_counter.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.001493323124260086"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frequency['美国']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "from json import dumps\n",
    "a = dumps(frequency)\n",
    "with open('frequency.json', 'w', encoding='utf-8') as f:\n",
    "    f.write(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'dict'>\n"
     ]
    }
   ],
   "source": [
    "from json import loads\n",
    "with open('frequency.json', 'r', encoding='utf-8') as f:\n",
    "    b = loads(f.read())\n",
    "print(type(b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.001493323124260086"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b['美国']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [],
   "source": [
    "occurences_frequency = sorted(list(frequency.values()), reverse=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "276182 17019641\n"
     ]
    }
   ],
   "source": [
    "print(len(occurences_frequency), tokener_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = range(len(occurences_frequency))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x15093b0fac8>]"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X[:50], occurences_frequency[:50])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train word vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "import multiprocessing\n",
    "cores = multiprocessing.cpu_count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('all_corpus.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write(' '.join(df['tokenized_content'].tolist()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\smart_open\\smart_open_lib.py:398: UserWarning: This function is deprecated, use smart_open.open instead. See the migration notes for details: https://github.com/RaRe-Technologies/smart_open/blob/master/README.rst#migrating-to-the-new-open-function\n",
      "  'See the migration notes for details: %s' % _MIGRATION_NOTES_URL\n"
     ]
    }
   ],
   "source": [
    "model = FastText(LineSentence('all_corpus.txt'), window=5, size=35, iter=10, min_count=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "?FastText"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\smart_open\\smart_open_lib.py:398: UserWarning: This function is deprecated, use smart_open.open instead. See the migration notes for details: https://github.com/RaRe-Technologies/smart_open/blob/master/README.rst#migrating-to-the-new-open-function\n",
      "  'See the migration notes for details: %s' % _MIGRATION_NOTES_URL\n"
     ]
    }
   ],
   "source": [
    "model.save('Summarization.model')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用TextRank进行自动摘要提取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task 1 使用neteworkx包，建立一个随机图，对该图进行PageRank分析\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "graph = {\n",
    "            'Yao': ['Guo',\n",
    "            'Wang',\n",
    "            'Tian',\n",
    "            'Tim',\n",
    "            'BHD',\n",
    "            'DCC',\n",
    "            'GII',\n",
    "            'EEC',\n",
    "            'CIB',\n",
    "            'ECB'],\n",
    "            'Guo': ['Li', 'EAD', 'DAA', 'EII', 'CID', 'FEA'],\n",
    "            'Wang': ['Li_2', 'IAI', 'DGB', 'AEG', 'ECH', 'CGB'],\n",
    "            'Li': ['GEH', 'CIF', 'DBD'],\n",
    "            'Li_2': ['AEB']}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "social_network = networkx.graph.Graph()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "for vertex, edge in graph.items():\n",
    "    for v in edge:\n",
    "        social_network.add_edges_from([(vertex, v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\networkx\\drawing\\nx_pylab.py:579: MatplotlibDeprecationWarning: \n",
      "The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.\n",
      "  if not cb.iterable(width):\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "networkx.draw_networkx(social_network)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "ranking_result = networkx.pagerank(social_network)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Yao', 0.1747698412634544),\n",
       " ('Wang', 0.12616099221117885),\n",
       " ('Guo', 0.12434209154337311),\n",
       " ('Li', 0.07600909782512963),\n",
       " ('Li_2', 0.04007465697366682),\n",
       " ('AEB', 0.022586982681035123),\n",
       " ('GEH', 0.021706946858994478),\n",
       " ('CIF', 0.021706946858994478),\n",
       " ('DBD', 0.021706946858994478),\n",
       " ('IAI', 0.020875426652805028),\n",
       " ('DGB', 0.020875426652805028),\n",
       " ('AEG', 0.020875426652805028),\n",
       " ('ECH', 0.020875426652805028),\n",
       " ('CGB', 0.020875426652805028),\n",
       " ('EAD', 0.020654738077342236),\n",
       " ('DAA', 0.020654738077342236),\n",
       " ('EII', 0.020654738077342236),\n",
       " ('CID', 0.020654738077342236),\n",
       " ('FEA', 0.020654738077342236),\n",
       " ('Tian', 0.020410584159305276),\n",
       " ('Tim', 0.020410584159305276),\n",
       " ('BHD', 0.020410584159305276),\n",
       " ('DCC', 0.020410584159305276),\n",
       " ('GII', 0.020410584159305276),\n",
       " ('EEC', 0.020410584159305276),\n",
       " ('CIB', 0.020410584159305276),\n",
       " ('ECB', 0.020410584159305276)]"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(ranking_result.items(), key=lambda x: x[1], reverse=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task 2 使用PageRank 对文本进行关联分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_connect_graph_by_text_rank(tokenized_text, window=3):\n",
    "    keywords_graph = networkx.Graph()\n",
    "    tokeners = tokenized_text.split()\n",
    "    for ii, t in enumerate(tokeners):\n",
    "        word_tuples = [(tokeners[connect], t)\n",
    "                      for connect in range(ii - window, ii + window + 1)\n",
    "                      if connect >= 0 and connect < len(tokeners)]\n",
    "        keywords_graph.add_edges_from(word_tuples)\n",
    "        \n",
    "    return keywords_graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "first_content = df.iloc[1]['tokenized_content']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "keywords_graph = get_connect_graph_by_text_rank(first_content, window=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd3gU1drAfzNbsiXZ9EZICIQSeu8gVZqggIANFbGgIILtig3Ra//wIioqYgEFLICCYAHpzdBbQgktEEjPZrPZvjsz3x8bloQAXu9FFO/+nmefZGdnzpw5O/vOe97zFkFRFIIECRIkyNVB/LM7ECRIkCD/SwSFbpAgQYJcRYJCN0iQIEGuIkGhGyRIkCBXkaDQDRIkSJCriPpyH8bExCipqalXqStBggQJ8vdg165dJYqixF7ss8sK3dTUVHbu3PnH9CpIkCBB/qYIgnDqUp8FzQtBggQJchUJCt0gQYIEuYoEhW6QIEGCXEUua9MNEuR/iRKbm8W7znC4wIrV5cOkU5OeYGJk29pEh4b82d0L8jchKHSD/C34bwTmvlwLs9YfY0N2MQBunxz4TKcuYMbqbHo2imV8j/q0TI74Q68jyN8f4XIJb9q1a6cEvReC/JW5vMAUUeCyAnN+Rg6v/HgYl0/icrmfBAF0ahXPDkpndKfUK3wVQf5uCIKwS1GUdhf7LKjpBrlmOScwnV4fINT43FUpgFcdLGRjdkkNgek//hBOr1zj2AtRFHB6JV758RBAUPAG+Y8JCt0g1xSyLNOvXz8GPvg8H+934PTKVOxbhWQtIaL7HdX2lWxliMZwQKRoxw88l3cES2kXarlzSWvfu1Jg/7bArYrTK/PKj4dpUTuCFrWDpoYgv5+g0A3yl+O37LP9bx7NS/98GcEUj23fz0j2csK7jALAnZ9N+ZavUSQPiiQR2rwPoc37YP5lNhaNjslfiuC20++xGRz94AUS7pxO2dqP0cbXRxOTjG3fKuJGvgCA+ZfZhNRujLHxddX65/JJvL/+GB+Orj57XLBgAatXr+azzz4LbFu6dCmPPPIIRqORBQsW0KZNmz949IL81QkK3SB/GS5nn1UKNzBp1Ewiw01IMjisVqTDW1BHJiF73JRv/Rrn0W14Sk4T2ec+NJG1KPrmBWKGPI7ksoMsUXvSQkRRoHmImW3bd6AyxSI5yvFZixH1JkSDCZUpJnDOqOvHXbSfiuI3Wdz5yTaiQ7WkJ5gwFe1nwoQJDB06NLBfUVER9913Hxs2bECn03HLLbcEIzyDBIVukL8Gv7WgJcQ3IHHse+c3HN5M6c/vETtsCpqIBPLnPkr0wIl4zWcxNu5Oxe4fQVEo/PIZFMkHgkDBvEcByMNvAfZaCpAdFgR1CJLNjGS3oA67aLh8DWQFNh0rAfweDmcXT6fZoDGY7UWBfVauXMn1119P06ZNAUhJSSE7O5uGDRv+R2MU5O9BUOgG+dP5rQUtb+kZUKnRRCRgO7AG646lKF43istG0aIXUSQfkrUYT2kuoU16oMgSQogBTUwyiWPfpXDBFBS3A8lmRlBriep7P/r6HTGvmYOvohRRF4oieZEd5WgTzwvEkhUz0KU0J7RFXwBs+1fjzNkDgOvEbnQpzYkZ9jQun0zUTU9zNHMNB3OLmZ+Rw+hOqZw5c4YWLVoE2qtTpw7Hjh0LCt3/cYJCN8ifyr5cS2BBS5ElJEc5KDKFXz1H0v0fIntcFH/3KrLbjsoYiWS3gCCSOPZdSpa+juy0Iss+dHVagM8DQMXO77Fs/ILIXmORrCW484+iCo1CZTAhe1wUffsqoS36oYmujSf/KGpTLD5LAZLDgrqKeeFiOI5sJXboFKIHPMzZ2ffjLTyBNiENQRBAAUlWAh4OkiQRGRkZONZoNGKxWP64wQxyTRAUukH+VGatP4bLJwHgyP6V8s0LiRs5DUGlwWczU7p8OpF9H0Abn4ZKH0bB/KfwFB4n/5MJKF633warDsF1aj8hlVqqqcMwDOndKfj8MWxZ69BE1SK8yy0Ym/QAIPft29DG1UU0hGPPXIuxaU9klw1vyWlUpurmhdKf3sHYvDeC4I+YD0lsgKFBRwA0UbWR3fYa11SatZVp1hJGxYQgVBGyTqcTUQxG3v+vExS6Qa4qVT0TSmweth4vCdhwjendsGeuo2zDPABku4XQ1oMQNToKFzyFsWkvJLsZU+eRSNZiNNHJmNrfBED+54/jtRTgKTqJNq4uqrBoEFUIGj2hzfpg+XUR2rh6uAuOofg8aOLrIQgCnsLjhHe5Bdllw561HnVYdPUOi6qAwAVQRyQE/veW5VGyfDqKIhPZY0xgu+yyUbTpaw4NGYF35+LA9p07dzJs2LArPKJBrjWCQjfIVeFynglVier/ED5zHuY1c9DG10MVFo3r9AEUrxtPcQ76tPbY9q4EwH5wA7YDa0CW8JbmoktuTvGyN4gd/izmH99FdliJvuMNrFu+QpfclIKvnkNUa1EZwwmJTUX2OAFQhcehclWgMkZg/mU27rwjAEjWYpB85H06EQDZWYGgOv+TERAwdRiG7LajeF04T+5BspWiiUlGFRbN5s2bkPb8ymuvvUZ0dDTHjh2jQ4cOf9gYB7k2CArdIH84/26oLYA6LAZv0UkAFJ+H4iUvo4lJJmboFLTx9Tj91ggiut1OWJsbKP1xJs6cPQiiGm1SOpqoWoQ2603hwqdBgejBjyIA6shaWLYsBFlCUanRpbYhtiyTQlMjUKlRh8chu2yoTDH4rMV+U0R6N0pWzMBxeBO1xr4LgGXzQr9XRBWs279FUWSi+tyPoWFnyrctwdikJ5K9DMfuFTz29pes+2I6VquVJUuWoNVq/4ghDnINERS6Qa4okiQhCELAdvnFryd5ZcUBSg9swti0JwDlGYsJazMYUasDwHZgDe68I0T3H4/XfJbSn2ch6sNwZP+K5KxAKTyBeeWsyhP4sGyaT8XuH1AZI9BE1vJvthSgyD7CO48ivLM/UKL810WUb/0GY3pXksbNQR0Wjez1YNkwj/3fzEAwxZHy2GIElRp9aiv0qa0oWjQtcC0xgx/l9NGMwHtDg064Tu0//75xdwz1O+A6fQAAY7NeqEwxlG/5EtEYgS69O99//QW7Vq36Q8Y6yLVJUOgGuaIsW7aMiRMnEhYWhiKqOX7qDKaON+POP+oPPgiNwnFkK6aOw1EUBWQJQaVGEFW487IpWvQCis+H7LRi3f4dsteFyhhBwh2vA3B6xi2kPPr1v9UXU6cRhHceWW2bgEK3RglsP6mm3fC7OaFR45Gr72FZPxdrht8Wq3ic5M+d7P/f50HUm87vqlQ3keTNeZCkcXOo2LEMr/ksEd1Hc2zuJ79vAIP87QkK3SBXlOHDh7N//37S09P58pCTs98twJDeDQQRT/4xPCWn0KW2xHl0O9r4epT8MAOfpRBQ8BSeJKz1DbhyM5EqSoi47k4cx3diz1yDKzcTXXKz39UXQaieBEelSMQWbGXDd18AsPrDF9C36EdUn/sQVBoQREAhoucYjOndAL+QTxzzNgCewhOYV38UaE/xuildOQvF4ySy972IWgPgX2xz5x1GEARUKtV/OJJB/q4EhW6QP4Snn3mGPKsPTWJDFJ8bQROC15KP4nagiart94kNjyP+1pfJm/MgutTWGNO7ocgSzpy9KLKE7LKB7EPfoJP/GFtZNU8CwK8tKwrCZVyxFFlGUHx0Cyul/6A2RN6xmI8//pjMzExe/Mdd/N+n86lI7owc3xhFlilb9xnlW/3atOJxBhbSFJ8HlT4s0K5kMxM36kXsB9b4NwgCnpLTuPOz0UTVxnt8G1p10EUsSHWCQjfIH0Lv0ZP4JVfGvPMHNNHJaKKTsR1Yg08XSmjzPoH9rNuWIKj9ScbL1n2KIb0bXnMe+FxU7P4ByW7B0Lg7glbH2Q/uw9i89/mTKDK+s4eQnFZC6rb1C1/N+YTl5/LpdkmN5Od/PcrDc9+jffv2AAwcOJDPP/+ciRMn8uqrr6LRaHj8mQkobi+9R08kvnVfNh0t4vTbtwUW0s6fVkIQVfgqSlBf4NdrXvk+UdePQ1Bpse34jriQ4E8sSHWCd0SQP4S8cideSQOAInlBVKF4XQEBq0g+XLmZ2A9uxNTuRjxFJ4m58Um8Jacx1G9PzGB/ngTb/tV4zWcQNTpqT/yimslA8Xmwb5nPqq8+Jq1JS77efoo1uw5x+MRpLMV5NE2N47nb+9K5TXO+NExm7Nix7Nq1K+BBcNddd9GuXTtGjhxJmzZteODu21m1ahW7v5rBs2kG8vVJnAYkRzkqQ3jgvKU/vI0utRViiBHwu5IhiKAoRA+ciCYqCUGAwU+8woZX7roawx3kGiIodIP8Ifz6zYc4JAFtfBpl6+fhPnsIyVrsNx+c2IkieYkZ/DhxI6biKc7xeyJEJfmzflkKKFgwJdDWOftqVYEryF4s6+cy5sbeAd/X8b0bMr63PyrtxIkTfPLJJwy/oR/169fn/vvvJyUlhVdffZVp06YF2mnSpAnbt29n4sSJzJo1iylTpjB8+HAmTZrEiVIPhoadyP9sEiqjP3euIvlQfG50qa0wpHfFdWofnsJj/oANp5WSFf8CWUZUiexIDKe4uPiPHuog1xjBcj1BrjjTpk1jW5mOvWUarNu/I7L3vajD4yj8+nlkh5WEMTMCttlztltRa8BTdAJtXD3sWesIbdkPAHfeEUJqNarSuoJOreK+tpG8cs9AVCoV8+bN44YbbrhoX7xeLytWrOCjjz5i27ZtOJ1OFixYwPDhw2vsm5SUhMPhYPr06dxzzz0sW7aMu/45h5jrH0ARNb953ZLLhqgOwaAP4dlBjYPVJf6HuVy5nqCVP8gVJTMzk40bN7Jh7v9Rsnw63tJcfNYiPCWn/UnFW/ajfNNCAJw5+3Ac3kThV8/7tcRlb+LM2UPFvpW4Tu1HUWTMqz/Cuu1b1IJCiFpkQNMEvhnXmaxls3n88cdZsWIFY8eOZcGCBRftj0ajYdiwYfz000/s3r2bvn37cuutt9KlSxfmzZuHw+EAwO12YzabWbduHf/617+4++67uf766+kY5SHKkYuiKFxOQQFQhRgRVGr6No4PCtwglyRoXgjyX5Obm8vw4cMxmUz4fD7yikrwChoURUF22bBs/gpPfjbq8Fj06V0p/X46pT+9i65OSyybv8SY3h1BrUVyWlF8HmJu+gcqfTiWTQtpdcNdZH7zFqNuHcLjt19PdGgIubm5LFu2jOPHjxMZGcnatWsZMGAAZrOZiRMnXrKfqampfP/99/Tt25ekpCS++eYbHnvsMe644w66d+9OvXr1aNWqVcDc0L59e+r1u5syXUoN97OLUrnPz5l5zM+IYnSn1GBZ9yA1CJoXgvzXKIqCJEls3boVh8PBzDXZbPrpO2SPC9llQxNdG0XyEd1/AoJaQ+nP7+HIzkBtisVTdBK1KQYFkMqL/P6ygKDVIYgqtm/4Ba1WS5MmTQJRbo8++igqlYrp06cH+pCTk8P111/PHXfcwQsvvHBZIXny5Enat2/Pli1b0Ol0fPLJJ7z77ruBNkeNGoXBYOC12Qv48KgeRBEEEUE873PrXxxU487NwlN0ElO7IdXOUbrsddr2u5n8ML9p5PdWKQ5ybROsBhzkD0UQBNRqNffffz/3PjiBPUdykD0uRF0ohgadAL87mNz7XlRqDdEDHkbxeQnveivlW77C1HEYvvIiPPlHCW3Zn5Ll00m641VCt82hX79+TJ48mYYNG6LVaiktLWXevHkcOHCgWh9SU1PZvHkzAwYMoLS0lJkzZ14yjWLdunV54YUXuPfee9m4cSMvvfQSdrud4uJi5s+fz3333UdcXBxOlQEnIYSkNMd9+gA+awmCSo0qNApF8hJ701NoYlMo/ekdVAZTIHUkgCKoOVzkRKevmdjnt6oUB/l787cUuldjShecNtZErVbz0aefY7V68FgKEdQafJYCAGSPE0GtQZH9uXONzXrjOrWvRhuOw5swdRxOklBG5/aNGf/Zu0yYMIHWrVsze/Zs1qxZw/Dhw0lKSqpxbHx8POvXr2fIkCHceeedzJ07F43m4gtgEyZM4Ouvv2bWrFlMnDiRzMxMJk6cyODBg8nMzGTG+x8xf+lKovreQ0hSYwDMqz5En9YWfVr7am3FDnuasjVzMDS+7ryGfQlFW3Y7ELR6BEEIlnX/H+VvZV64XPrAKzWluxrnuNY49wB6+tbehLboi11S4TyxC1FnJKRWOgDlW76k1riPcOcexLptMYiXf96HyC4G9+jAggULUBSFxYsX88gjj2CxWNiwYcNlUyQ6nU5GjRqFLMssWrQIg8Fw0f2OHDlC165d2bFjB127diUjI4OUlBSysrLo0LkrutZDCOtyqz/8d9X7eMsKUIdFI2hC0CbUJ6rvA4G2FEWpZtIoWT6d0Bb9qNjzE4ZGnQMVhc2rPkQVFl0jJ4Reo+LrBzoFy7r/TbiceeEvKXT/Ey3y300fKAigU6v+oyndb53jnBP9uXOMaaLmqVv7/q5zXEtc+ACqyD+J4vOALFGxbyUqfRi6Oi1x5x3BdWo/caNeRKyMGHMc3YZkK71ouypDBAm1kpjWO6Gaa9frr7/OnDlzcDqdzJgxg1GjRl3Sduv1ehk7diw5OTksX76ciIiLC7M333yTH374gX379lFWVoYk+TXx216ey4b9JzE06oI77wgVu5YTNeBhpIpSUGTK1s1FV6cFtn0rkV02ogdNonzr1yheNwgCPkshosGE7LAiaHVE9hyDsUkP8j4eT9zIaajD46r1QxCgf5P4GmXdg1ybXDNC9z/VIn+rsOHF0GvE3+VLOT8jh3+89h6WQ1uIu/m5Gp9Ldgt5H4+n1n2zUBkj8VoKKPziCd5fuoEH+ra4SIvXNhc+gAq/nor7TBai1oAQYkDUGhBD9AjqEASt3l/jTB9GzJAnACj86jn09Tuijoiv1q5kM2PPXEtqnzuY+2BvOnXy24Q9Hg/169dnyZIl+Hw+HnjgAZKTk3n//fdJTU29aB9lWeaxxx5j3bp1rFy5koSEhBr7+Hw+mjRpAkB2djarVq1i6tSp7Dt8HEmtR7JbCO96K56Co4S1uwnLxs+J6vsAZevnBe6DkhUzMDbtgb5um0C75zRd24E1GBp2wtCwM97SM+TNeQjRGF6tD0kPfIQYYiBELbL1qd7/s+apv5PJ7ppYSPstLfJSiw9VCxvKbgeKz43KGFmzgQtwemVe+fEwLWpHXHZKl5WVxcGzZbyy2YYXsVrlgKqojBGENu+Dbd8vhHcZhW3fKkJqN+GfH3+H+8xB6saE4vP56NOnD2FhYRdt41pAlmUWbj9d4yEX3mkEmrgnsW5bQlibwdj2rUQTkxyYVpdtmBdYVANAVFGxewWC+oKk3pIPtTECe95RkpLuDGz+8ssvadiwYSB3wq5du3jrrbdo164dU6ZMYfLkyajV1b8bURSZMWMGL7/8Mt26deOXX36hbt261fZRq9UMGzaMd955h7Nnz9KvXz+uv/56Ylv2QmzQjfJfv0GbkIan4CiK11WtXE81LkjEIzkrKFn+FrLXiStnj78UUHgcET3vJrzTiMB+uTNvD9xTArB49xnGXZd26S/gb8jlla0CZqzO/luZ7P4SwRHnNVW/wL2c9l118WF+Rk61woa2A2so/vZVFMnH2dkPkD93MvlzJ/v//2wS+Z9NomD+PwJtuXwS768/dtm+ffvtt7w66zP/OURVwBdTdtmwH9qEZCsL7Bve7Q5MnUcgux3YD6xGm9iQ8uO7eeG5Zzl8+DBZWVl4PJ7/Zqj+dNp16sqUt+fi9MqY18yhPGMxiuSlZPlbSPYy3GcPIzushLUdjOyy+4Mefngbff2OFC99w19OHUCRibnxSWqNfbfaK3bE88iyTFHG98TF+afgsizzxhtvMGXK+dBgrVbL008/TUZGBitXrqRdu3bs2LGjRn8FQeD555/nscceo3v37jW8HgBKSkro06cPDz74IIqisHbtWnyOcjQqgcS7ZwTc2Lwlp1FHJPoPqlwQrIota13g3hV1oUTfMBlDg85EXf8gkb3vxX5oE5qoJCybFwaOUWQJKtt3+WQO51f8B9/Ktcv8jBxunZPBL4cKcfvkGmWcXJXbVh0s5NY5GczPyPlzOnoF+dM13aqa6jkchzbiOLad2BufBMB1aj+2/auIGfIEssuGIvlwGiN4+YdDSIoS0IzD2g7GdXI3jqMZJI3z5z11nTmEedX7JIx5u4b9T1Fg3ZFiSm3uS05f3BLkWtwYZQXJXoan8AQF859CspnxWYtJeugTrDuWUbH7BxBE4kZNw7rtWwzp3QjvNAJ3/lEqrEXc8+DEa26KdCEff/wxucUWjL3902hBpUHUGnBkZ6DIPmy7f0QTk0z+F48HjjGv/ghNVBJla+YgqDXkfTYJbVwq3pLTlCx9HVEXWu0ciuTFEKLF7rTStGlTHn74YeLi4jAYDPTp04cLqV+/PqtWrWLBggUMGTKEUaNG8corr9SYTYwfP57IyEj69u3L0qVL6dy5c+Cz/fv3M336dB5++GEWLlzIhx9+SKdGyZwTzypDBPr6HbAf2kRo874I6hBCW1xfrf2KHcuQvS4MDbsgaEIQBOG8X68goDJGEDv8GbRxdbFu+xZPwy5o41IRqJ5Twury/t6v5apzpcwAv8cs+Hfy9LhqQvdSX1TGidKApgqg+LyUb/mK6BsmY8tci6FBJ/8UVBBxHNlK2dpPCGs/FFO7Ibh8MmIVOSoIArE3Pxe42RXJR9nqj9DX74DsKEfQ6AIlYgLHcOkpXV5eHmsy9lKRtYPyA2sRVBpUehPRgx5BE5XE6ek3ozJGENZmEGFtB1fW5lIwtb+pmjD5O0wb169fz6TJk1E36IpRqBQmsoxt30oETQgxgx9DX68tANH9J1Dyw9sYG3cPbAP/w7Niz0/EDn3qkufRa1S80D2cN5+awKxZs5g5cyaLFy+mb9++ZGdn06hRoxrHCILA6NGjGThwIE8++SRNmjTh3XffZejQodX2u+2224iIiODGG29k/vz59O/fH0mSOHjwIK1bt+bTTz+lX79+xMTEMKhNG2QhgqMCqCPiceVmBu6h4m9fIebGJwLt+qzFgELcyBcCC4U1+qjWBkrEx454HsvGLzB1GO6fPVXBpPvtHA9/FlfSDHAxZevfwemVmfp9Fr8cKqRzvZhr0t77hwvdy31RIeqCGtOJsrWfYGzak5BajXCe3E3Z2o8JbdEP59FtiFoDcbf+M1AXC0Cu1HIdR7dh2fg5yDKJ97yDoNb4s/xXllRxZP+K42gGcSOmVosscvlk1u89Sl3Xcbxeb+BlNpuZOnUqLrURbZ0WRPW+D8exbTiObEETlYTssiGE6CvbOt+eIIioIxOrXZOkcE1PG7OysrjlllvoNWIsm/YdwX32EJbNC/EUniC0xfVE9hxTbX/Z68ZTcIzoARP87102zn54X8DftfCbF1DcdhLunF7tOEGRaBAfzhe7S5A63sk+Txy3jx3H9u3badu2Lddddx1t2rThkUceoX///jWCH6Kjo/n0009Zv34948aNY968ebz77rvUrl07sM/AgQNZunQpw4cP55133qF169bEx8djMplo164dRqOR0tJS1q5dy1uffMWERQfJWz7THwwxYioqXSiqGyZTtOQV4ka+gCYyEVOHoehSmiNqzj/QFcnnj1rDX3FCclYQ1rIf7rOHMP8yG2OTHqhNsdXuRZ1aJD3xr2nv/0/XXC5Geno6hRUe7L4LPpB8KCgk3f9hYFPx9/+Ht/hUjbWUL2WZbyPimDFq6jVn7/1Dhe5vfVEXClzJafUXHAyPw3ZgNYJKg6+iBE10CvoGHYnq9yAAxUtfJ2rAw6iqaJOGBh0xNOjImVl3oygS5p9nAxDWdgheSz5hrQfiPnOQstVzAu2cY/O2Xaz+59tIkoQkSfh8PjweDz6fj9DmfVEZIxHUlRpI5XX4LIWow6uvvJ+jYu/PVOxagaBSo3jdSDYzHz86nO+ekunWrRtvvPEGCQkJ10wpl6ZNm7Jjxw4emvE1snwEdXQykb3vw561rtqiZfnWrxFCDCgeJz5rEfnzHkNQa4m/7RU0MSnE3PQPXCf3oKvbmqJFL54/gaKAICDLMvvPlAMiRDTk7dXZuD0eGo59k1F39+X555/nq6++4tlnn2XSpElMnDiRMWPG1DAl9OzZk3379vH666/TunVrpk6dyvjx4wPj3bVrV3755RcGDhzIDTfcQPPmzQFYs2YNRqMRg8HASy+9RLdmdTG99RH2LqPQxp+fpWjj6pIw+g1s+3+hYuf3qEKjKK9yfslmxtCwMxW7f8RTeAxdnZaEJDfDnrUey6YFxAx9ipCE+shed7WFRAUY0aY2fzWutBlApdYQOXwK4aHVE8D7LIUULflntW3nTIyX4py991qK7PvDhO5/4sal0puo9YDfefyc1uArLwL8FQbMq+egSF48xTmBBNIXw7r9OwSVhsi+D5wvpQJEDZhA8eJ/ItnKUIWeFxZGrUj9Zs2QZRmr1crZs2cB/xO5SK/FXbmfInlRZB/WnctxnthJRPc7apxbQUGX3JSwVgMAcOcfpXzr17Qaei8JJ1dy9OhR2rVrh9lsplatWqSkpFz0lZycjMlkqtH+hVwtN5uUlBQcHi8Kil/b04XiS2pM6U/vYDuwGhQFyWYmdtgzlKx4C11KC+Jufo78uZMDaRxllx3z2k+ode97AKhFAZ8ko+A3wZxbsDqHyyeDqCbbrubWORk8OyidMWPGcPfdd7Nlyxbeeecdpk2bxp133snDDz9M/fr1A8fqdDqmTZvGrbfeyrhx45g/fz4fffQRSWnpleMl0f3ZBaxYs5J4YwTFFU6mTZvGCy+8QEpKCqNGjaJhw4Y0SU7m1MHThNWq71cSKu2vKkO4v/R7fBr6+tUj1JzHdiDqwjDUSid26JTAA1v2utCntUPUheIty8dbchqxsvyPIECvRrFX5Ds7ly+4at7gc0yaNIkuXbpwyy23XPL4qvfUqi/eI7/cSXi36vd6+bZvAQjvWDNFJlzeO8jqkiic/zSKqEZ221G8blShUSD7ELT633Glfq41e+8fInR/y17jr6mvAUgAACAASURBVALrq/YjUxQZxevBmrEE15ksBI0Ob+Fx9OndiR4wgehBjyAa/F9eRI+7LpvQJLzLLVVqaZ1XsUWNjvjbXqm2r+x1U3YyE9uxo7hcLqxWKzExMcTExHDixAk0STqEeP95QxIb+hdV6rYOJDgpWvxPjM16BRJtl62egyosiuj+E6qcRMJVcIJevXoxZMgQkpOTcbvdnDlzhtOnTwdeO3fu5Ntvvw2812g0lxTKdl0Miw9WsPFoCXB13Gy0SHBuylycgzY2leRHqqdU9JbmEtXvIWz7zpcdVypNPIrkQRMRj6+iFJ2q8j4QhEtFzJ4/npo/qm7dutGtWzdOnz7NBx98QOfOnenYsSOTJk2ib9++gfsjPT2ddevW8coHX3DD68vQ1jmFRqPG7fPfF9qG3TD7PHR4eRVC2mAadx1A43gDGo2G3Nxc3nzzTXbfcw8jOqQwb8vJgNA9d12iLhR1FXMX+D0XxBADoc16Vd+u0UHlLV/y/ZsokhSITNOpVYzvWZ8/mpkzZ17ys4uZAi0W50X3vZSwtWxaEFBGznkHfTi6HdOmTQs8BJweL3G3voI6Ih7b/tW4Th8gZvCj2LN/xbJ+HuAPl877eDyK5PUL5Isgu2woXjfxt7+KNjY1IOgTNS6mTb6fTZs2/VtjcrW54kL3qaeeYs7CJdh9F3gKyDJqUyxxI55Hspkp+mYqgqhGspf5B1VRUJliUYdFo6vTEnVkLSzFOYhqDd7iHOwHNxI9+FHsB9bgNZ8htGmvi3egsqw3qsok2ZIvICguhiiK2DPX4DD7NWqVSkV4eDitWrVCr9ezYuVqbEUaFMmHJioJTdT5mH/F58VTdAKT/iZklx2v+SzGxtcR2ff+qh0CQWBQeiQZGRlMnTqVlJQUhgwZwo033kjPnj0ptXtYvOsMpQVWklw+GuvUpCeE0bdeKBUl+dUE8549ezjsi8FSrw+ImosWZAzY17IK2ZBdzHP/ZUJtSZJQFIWhI2/jZGQbPBLYD25AE5FIaES/81cq+VBH1kLQXKCtyP7++MxnUUck4Dq2HZfXh3T59LQ1uJj2lJKSwmuvvcbUqVNZuHAhTzzxBF6vl4kTJ3LnnXcSGhrKwu2nWVgYjyY1BhkCAvccglqLAiiJTbnt421E5qyjXbt27Nq1i88++4xu3bqRW2j2ZxurepxKjfvsYTzFOdW2Kx4X2spFs0uRePeMwP/+QJ30PzUE+N+N6Pwtyrd8GRC6Vb2DXnzxRaZOnUpubi6C3hSw6yuA4nVxZtZeUBRktx1H9q/o6rRE0Oj84dWVdm/ZZUM0RhJzw2Ss278jpE5LPAVHcZ89grf4FJ6CY0jtb+LzbSqsVusVGJU/hisekXbvuIf4uSwGTVonvOazCBod6rBovGV5lP74Dgl3vB7Y15GdgXnlLGqN85sNVPowChY+DbJEeLfbKV78Eob07oS1HkjJirdQGaMISWlGWMv+gTBKfwIVAUEUsWz5EmvGYtQRCZg63oy+bhsUWULxedBULm4pkhfF50UMMaDIMs6jGZQsfY2EhASSk5MpLCwkNzc34G+ZlpaGWdZjtZTVuFZBENDE1qmMslKw7V1JWNvB1fZx5WbhyVhAmNdCWloaTz75JAaDgRUrVrB00x7caT1RJ7dAJarwVvkqLhWBdymzzYWx/9XweUjI30JLY0UNjTkpKSlQM+xSfP/99zz66KOIKjWnzA7/c81pRRBVCFXNPJKXiB53EVK7KfmfTkQTk4zktJI4ZiaOgxtwFxxDZYzAdeYQxkadCWs9CPDbwMs3L0RRZCK63k5Ym0Hnx+/UfixbviTh9tcqx/zy4bKKorBx40ZmzpzJhg0b6D72GQ7pGtcQtLLbgRhy8ZwMguxl2o3NqeU4wdChQ3nmmWeYe0KHNy49cA4kH6jUl51xnasNd2EF48B5/ouQ9Msxbdo0Dhw4wNGjRykvL+fDDz9k4MCBAIwZM4aePXsyZswYwP9AveuxF/j60/dRRyYhhhjQxNUl8jp/YIplk38mc6EprWz9XASVJrC9bN1n2DLXINstiMYIv6nwvvcpW/sptgO/IDsrEEIMIAhE9R1HaLPenPq/YUT1HYfjaAaK20bCndNxFxzDU3CcsnWfgewjJKUZnoLj1H7oU/I+Ho82sQFR/R7i7Oz7MXUYiuy04crZS9zIaXgKjmLZvJDao6Zi3DCDA/trJlS6WlzViLTjRTbQxABg3fYtmujamDoMq7Gf4vNg2byQqP7jkRwWCuf/g8R7ZiIIAu6S01jWzw2s/oJ/8SJm6NOV2ZnO/4A0ajUiCrb8E9iz1pM0fi6SzUzFruVYt3+H4nb4TRc+j//lcRJz01MYG3dHhcwdrWOgziQ2btzI3r17kSQJWZYRBAGtVsuJEyfQJjYg8Z63q61OX4wLBS6ALikduUFXuiT4aFIvmccffxydTsd19z6LSt8blVdG5rwXxjkuthrcPCnikmab4iX/RF+3zUX7gFqLuU5P4mILqCg4xs8//xzQnPPz84mNjb2kGaOqVg7wwBc7+eVQIeb1n6OJrEVoi5q5JbyWAkKSmxJ383NYNn+JqAlB1IXizs0ioc/duE4fwFN4wr9v6Rks6+eScNdbIKoomPsoujot/Dl4fV5Kf36v2vTyt3yrBUGgR48e9OjRg5+3H2LCt0eRfDUVi6LFL2Fo0AlTh6E1PlNEDa/9nM3LvWNwu9289NJLRA6ajK5S6PosBZQse8NvHqsUupK9zK/pn6sOrCgoko+ofg9eUG7o/AO1V6NYxves/4douDt37mT37t3k5OQwaNAgTp06hU5X8/6Njoml3GYn+eEvKM9YBKIqIHCrYtnyJYJaS3jHmwGwH9pU7boie91DZK97OPX6YJInzj+/vfdYInuP5dTrg0l59BtKV32AJ/8oNO3p90g4F3BUmQCpfMtXOE/sJuGO19HGpZL7zmgU2YuvvJCI60bjzjuCSh+Gvk4LXCf3oo5MxNRhGGpTDGpTDJ6ik7gLT+B1/nX9na+40C1zePCGKmjwa6EXW+GXXXYKv5mKGGJAcpTjPbIVMcRIyYoZKIC+Xltib3yS02+dD5dEpQloFUWLphF1/Ti0UbXo2zgOOe8gqzxJJN49AzHEgEofRvSAh6udU5GlwCq5IKoQZR+arBV8uGY+cXFxyLKMKIq0bNkSSZI4e/YsI0eOpHv37hw8eJClmespS+2J8BuCtwaiitCW/dkqyazfv4cKm0BEXCO+OykgaH7fanCdaGM1n+ZzOI5tx1tyGm9ZHoYmPVDpa7odeRWB4phWfDj5vmrbfT4f+fnVTRiHDx9m1apVgfcejyewuBderwVi5HUg+1DkC31+/KgMEYR38S/URHS7DfMvs/3BLjc/h1xynNihUyhcMAVPUQ6uk7vR1W0TMNvo6rXBeXwHmujaWLZ+hTahPpLNXK19j9vNA69/yvheDenYsSOhoaE1+gCwOKscWVRVNesDYN2xDJUxAkf2VkJSmhGSUNOW6vT4mDz7BzQaDZIk4cw/jjatI6ImBE1kIolj3sZnKaQ8YxFR/Sdg278KyVpCRPc7AmsWiBdowopMHZOK27s1ZESbP9a/dPjw4URHRwde2dnZtGhxPgfII488wpYtW6ioqABZpmDhFLQJ9XEezcCVsxfF60IbVzcQgSeotQiVglH2OJEdlkuHRF+GiO6jyZvzEKFtBvsTwwsC5/JgOo5uw3lsOygKhYtfRPE4wechtNUAipa8jDa2DogizuM78JSexVeWh6foJJ78o4j6MGx7fiRmyBMosoRre83fyV+FKy50PVUMdbKjHFVoZCCH6jkErc6/KBUahXXHUgyNuhLVfzzOnL24T+33H+t2oEhe1KZY1BHxuHOz/CG8iozsdaMOj0enVtHAl8O/Zj5N/QH3cCq6rd8v9yLTuYA/pCKjeF0Yj6+mVaSLqFatOHLkCP3796dOnTocP36crKwsysrKmD9/PrNnz6ZBgwaMHDkSQ4tafLK7DLckc8mEqRdBFtQg+NDWaUV0amu/HfaC1Ib+h4IcWFwsWTGDyN5jA6W/HU43W+a9R2TPMdWmxd6yPMw/v0fcyGm48w5TtGgacSOmVisZDpfWENVqNcnJySQnJ9O1a9eL9t9qtZKbmxsQwuTksKvHXciXSM8oanWEJDYIvA9t2Z/wTiNw7VqKFFcfgyGchLtnIGp1VOz9qVrGLXVYDD5LAZ6S0ziPZhA7dAqlP8+qfi0qDaW+EJ588kn27NmDKIqoVCpUKhWi6P8h+3w+3G43daasqHas/fBm7Ac3EH/bq8hOK0WLXyKq30PokptW208QRcTklqiM4bjNRXgKTyCqNRe0tQlv6ZmAYLUdWI0rZy+goEgScbe8iEp/3gNFUGQeaChzx1UIkqkq7EVRRK60qyuKgtlsplevXlhdEgdL/Q9O15lD/uCf0CgS73oL99nDVOz5yf8AUWQEhErt3Yvj0CYQ1bhO7ads7SeB84S27P+b/VLpw4jocReKx1HjM/PqORhbXI/r9H5UujCkilIi+96Pvl47FK8T8y+zcZ3aT3inkSTdN4u8Tx9BdtmI6D0WQ902+CwFFH75LDFDpyBfOHX8C3HFha6mirzzFJ+ibN1nRPa+1+8aU2kWEEQVEd1HI6g1uE7tR5fUGG1iA7SJDXFEJOK15COGGBA0OiKuGw1A7Qlzq51H8bqxrJvPP15ZglarZeOnr1C/Q29CO9yMNTQZURDwKudvvPNTunjaGczM2bSb7w8fJjExEa/Xy4EDB4iIiGDYsGH861//Ij4+nuzsbHbs2MHXX3/NW2+9hcfzGqrYuiT0vhslsQmiKCChonjZmxgadsbYuPslx6Vi1wqsO7/3u8h4HKjDE0BUIdvLQKVB1ISgTUoP+CW6zxysJjgd2VvxWQqqCVx3fjbFS98gqt9D+CwFaBMaoHeUU/D540QNeBh9aqtqffhPI+NMJhNNmzalaVO/YBrH71h4kWU0kYmY13yMY/9KYob7M3OdiwxUfB6EqoKpslaa+ef3iLr+IQTVxe3NaY2bM/vl7Zw6dYqDBw+SkZHBtm3b2L59O3FxcdS67lZOG85fpyJLWHcsxXF4iz9yTOuPTowd/gzF372OLqU54Z1GVHMlRFEQ07qi1R0iasAEqj5ofZZCKnYsQ5faisKvp4KoQtSFknDn/6FIPmRXBWKIEdnrQtToEASI9hTgtv7xEWder5dFixaRlJRERkYG2dnZDB06lNLSUmw2G+BfMNanNEfUh6P43Gjj04gb8TyFX1XJoKfIKF43jkMbUCS/O5fXfAZ3bhbahDREjR5NTB0AKnYtR9+gE6LehK+8yF9dw+tG1Plt/qLehHn1RziyM/y/bZUaFAXL5oXIbjuCSo06LAbHwQ0oXhdKqBtRb6L0p3cRNSEoPi+yy0bM0KfQxtfDeXI3kt2MMb075evnIaq0mNrdiDosBlGjQ/F5WLx4MbGxsfTo0aPGGP2ZXHGhWysummJJj+t0JurwOH8cemWMvq7ueSFQ9O0rCCoVnsLjWDYtQAzRY0jvVsNXswaKjCJ5KVv7CRV7fkQURVwuFxERESilp/Cuex+D3oSnVmtUYfFIohavw4rlTDae7E3MdZTzmaKQlpbmzyYVG0tkZCROp5PCwkLefddfqcBoNNKlSxf69OnDzJkzadCgAWvXrmXmzJls+v4N2nfrhbtBL06HpPoXlMSLBzookhcEEVOHoZg6DMWyaQHWncuJv/011KYYSle+jyYmGVNbvwua13wW99nDIAg4sn9FNEQQktSIil3LiR7yBL6KEkp/fg91eAKOw5uIGfI4+rptKP35PUISGxLR9TY0kbUo/u5VtLF1ier3INo4f2atK5lQZXSnVFrUjuD99cdYd6QYgfN2aAAVEj6fRONIkZToMH481Zrwxl1QRSdXa0dUh/hz8ALO4ztRJC/2A2sIbTUAXUozfJbCi57fpNOgVqtJS0sjLS2NIUP84ydJEpmZmUxZdhicfrODtyyf4u9eC3iflHw/vYrrl4IupTkIcPaDsahjUxF1ochuG/G3vIyp7WDKrEX+nB4eF+7cTNQxdXAc3ICp0wjC2g7GU3CM8l+/wVdWQO67o1G8bhSPC4DYEVMx1G+PTq2ihSofs/nippDfg6IoFBYWsnPnTrZv305WVhYnTpwgLy8Pi8USSKr05JNPIooiaWlpdOzYkRYtWrBmzRoGDRpE9+7d6di1O5HDp1L87avIznLy5z2G7Cgn79NHUCQP2ti6iFodoS37Yz+0kbDWgwhJSvf7zisKstflt8kqMqg1FH71HCpjJGc/vBcAdWQtFI+T2g9/Tni32yhb/REgIIYkEzP4cazbv8Oe/SvIEprYOngKjhGS3BRjk55YdyzFZylEm5BG/C0vIXtc5H08HmN6NySXDfPqjzB1GIbsdhB9w2Qq9vxExd6fkMoLEWQJtcPKyZMnA2k7/0pcEe+F5cuXB9xz3D4Zs82F7LAi6oz+Mi2iitibn0ef2hJXXjaF858MCAKvOQ+VMSKgwXkKjhF+3Z2Etx9K7nt3kfLo10ClRiQIxPmK6VtL5pP/m8rHH3/M8uXLcTqdPPXUU5w5c4azZ89y5syZwP+5ubnk5ORgt9sDU+m0tDQiIiLQ6/VotVqEymgol8uFxWKhtLSU/Px8SktLsdvt/oESBEwmE/Hxfht1bm4uXn10wNFdpQ+r1Ob9KSYT7pyOGGKgPGMx9sy1gRh7yV6G7LD6bZgqNZK1GF3dNsTe5M9+5srNxLpjGZLNjCYqCUXy+W2OKg2mdkNQfF6Kv38TX1k+caOmoQ7zL1qaV3+ENq5eYGFLsluo2LUCU6cR1fNNnD2Aae9CwsLCCA0N/bf+XmybTqcLTGFLbW4W7z7D4fwKftmwmdKCM4y4cRDfrtqEJrkZapUKn1LVv/W8p4V1+1LceUeIHfoUZ2c/gKBS47MUImh1fsEo+8dTG1eXxDF+NytB8lLXdpCu0c4aASXn7Ltj5+1g7WG/G6AiS7hy9qKv1xbJUTV27NyvQEClNyE5ylFkCeeJXZh/vLQ/a1Vihz+LoWFnnCf3YDuwOjBTKd/2LYa09mhikgO5m0+vXUhFRQWvvfbab7br8XgCGvyePXvIzs7m9OnTFBcXY7fbkWUZtVqNyWQiISGB1NRUmjRpQtu2bWnRogUGgwGz2cypU6c4efIkubm55OXlUVhYSGFhIUeOHCG0eR9UsXWp2Pk9hrR2hLW7kbK1nxDaoh+GhufTcDpP7KJo0YuE1G5CaKv+GNO7k//ZI+gbdcG2dyWRPcdQsfdnZKeVpAdmU7bxCzQRiRib9eLsh/eR9MBHFH37MuGdR4EgULFjKbHDngH8ZrTQFn0JSW7G2Q/GoomuTWTPe9DG1yP/88eJ7HkP6sgE1GExnJl1N7UnzPMnwK8oQTSE4yk6SeR1d2LbvxpNXCramDqoJSeG1a//vb0XhgwZgsViobCwkJsmv0rZj18SPegRQpv3oWjRi4R3uYWQJP/Kb8W2xSCIaGs1QnY7AsX+ZI8T2e0AQSStbXeyN3wBsoRyZj+x4UaG9uzAg/1b4bQU061bN9588000Gg2rVq1i//79mEwmmjVrFuiTz+fjyy+/5LXXXiM9PZ0nnniCVq1akZ+fX00oV/1bUlJCbGwstWvXpm3btiQlJZGUlERUVBQul4sTJ05w8OBBMjMzUUJCqTX2HVBpKFkxI5Co+kLCO43AkN4N66/fEDVgIuWbF2LduZzYkS9StuYjtPFphNQ679OpS26GJ/8Yos6IqDf5XaY2LQBRxLr920rHeyOyqwLJWhwQuheiMkYETDNViTCEcF3PniQlJZGQkIBer8dut1NRURF45eXlYbPZqKiouORfn89HaGhoDWFsPXaMiqjG/HC4M+rkFiCKXOg8UNXeqK/fnvItX+ItPUNY64GUrf2UxPtmoY1J8X+PlkJKfphRzdVQrdFwc5skSvNOsW3bNhYtWhSwN+t0OlJSUqDz3RDhH1dBVKGv1xbLlq9wHs246HiFtR1CaPM+FHzxJLEjp2HbtYLY4c8iSz4Utx3zyg8wNO2JbfcKovqPRxNZi4L5/6Bs43zKt36N7LIhe5zkfTw+4NVgz1qP4rLyr/krGN0pldn7osnJyQmcs6SkhK1bt7Jr1y4yMzNraKuCIGAwGIiKiiIuLo5GjRrRsWNHjEZjID9IcXExpaWl7Nq1iw0bNuByuQLeN7Iso1Kp0Ol0GI1GwsPDiYqKIi0tjSZNmlDW+CYO55XjyFyLLWs9tgNr0ddvjy61JVDp464olK37DGPTXohaPdaMJajDE9DGpxHWcgDWXxdhbNYbW+YafNZiCub/A5+1GEGlwbZ/FSBgz1qHZDNjXvUBsqMcUR/G2dn3E3X9g3gKj6ONH4f553dR6cOI7XUPckgopas+QB2RgDa+HgWfP46oNxFx3V0oPi+GBh0Bv33+nG3rnLIhCNC1jo794r+/5nK1uWLmhSNHjtC+QweEOu2Jv/01NJUrm7qU5hQvewOVIRxF8iJ7PQgqNc6Tu9FGJ2Nsch3q8DjUpjhEYwSFC6ZwfNcm3Cd3EZ+Uwi2pXgwqM8+N6ERpaSn9+/fnkUce4cYbb6RFixbMmzevWrisy+Vi3rx5vPHGG6SkpDBz5sxqEUoXy1J1Dq/XS0FBQQ2Nee/evdW2hYWFUbvbLVwqM66iyCD5AnH13qKT2LPW4zi+y/8g8TgonP+kf/VfUXDl7KVi1wpkt53oARNxnckissdd2A9uJCQpnbB2Q1CHxVRL+iE5yhH1vx0mXBXZ66bo6B6+P74RWZYDP+7ExERq165NcnIyqamptGzZkujoaDQaDVqtFo1GE3ide39uvDweD263O/B6Y8kWSrdtoeSXOUT1e+iSfbHuWo6g1hLWsj8Rvcf6M7SBP4nQhYnNq48utUUruG3UqVOHOo2asc+qJ86tprkioldDnNZLWYWT9YUyUpWU0ZLNTHiXW2o8HC2bFiA7/WYXQa1FpTMiaEICC3w+mxlF9lGxcxmJ98zEW5KLKjSy2jqD+ZfZqCMScBzZQszgx1FHxCMKMLV7NI6Tuxg37lM2b97MqVOn+Oqrr7DZbCiKgkqlQqvVBsZVFEVMJhM+nw+Xy4XT6SQ3N9cfVFDpxmgwGAgLCyMiIoLo6Gjatm0bCCmvW7cuderUISYmhujo6Iu6iRUWFtK/f38qsmdSZnEhe5wobjsIIu4zByn65gX/SHvdGJpc5w9d1psQRBXx142mcOEzGOp3qAz/lnGe2InicaIOjyNh9JsXaLr3E9qyHwgikr0Mb8kpwrvcQvHSNxBDjMQMfsw/q4tORuN1kLfoRdQheoxtbyK01QAEQaDW/R/gys2i/NdvcBzZQtyIqf7++bx+f+kq6NQqRneozaRZ7hrX/Vfhignd+vXr89JXm/hg69lqIalhHYYR1mFowEFcslsoWjTN/7/NjGQz4z5zMLC/Nr4ehkZd0UYno0lqzGKviWh7Ad33HuMf995Cnz59uPXWW7n33nvp2bMniYmJ7N+/n/LychYvXszChQtJS0tj4sSJNGzYELvdzpIlS6plEPP5fNXeX2xb1fdarZbk5GQSExOpVasWmZmZnNn2I/KeDfisJUjWIuxZ6wLaPIqM4vMSPeRxipf8E1FrQBOdjCJLgRpbosF/E/usxSiSj5jBj6NNSENRZH9J79BoXDl7CGszCEf2r1h3fF9tvHXJTYkeOPF3fUeiKBJWnEW5y4XVLRPSbADRterjCwnllNfJsYIcbKs+w1FWhCAIhISEVBO6KpUKRVECiYH+n7n3Do+iXP//X7M1fdN7pBl6DUWkBggtSBdIsFAEKUrxIJ0joIJKEVDRAEozoDQB6RBAWqTXQEIJBEhIr7ubbJ/fHxMGQkA956vn97mva66UnZ2dnXLP/dzPuzgcDmw2m/y34FsV19ZvYCvMxF5agjnzlixn+HTYSvIoOrYev34zpWukUVfcy2e+Tek3ULn5yOuqPAMqVLnYrBSc/olvLGZKQ5rj8K8Foh6eQhY4rFKViEIJDjsKZ7dyjHXlVpqMBRcELFmpOKyPb1YJD563axG2/HSULh6ovILI2/4Z1oJ0At9YUMFqyJyRjGu9SEpvnpJ2sziHvF2LGbe/KoZLeyrhy0GazNJqtXIl6u7ujk6nw9PTEy8vL3x8fPD19cXLywsnJycUCkWl6/bpJT09nXv37v3hOo8XDw8PNKgx1GlHceImXOtF4igtwabPw7VOW9nZ2GE1ISiUlJzfJV1DWlfJSSP3Hqb7SSBC3s6FKF084LkPyyff2ZB0WBJD0ufjMBtR+1UlZ/NsnF9ujtLNB2XVCDqFupCRkcE77w1h5bk8GZPuFFYPp7C5T50fymnWT5ipj5l9XVpUJTk5+Tn78n8j/jZG2rvvvsuadT9iF56ZULLb0LWJrWBRUnx6K05h9dCG1JEwprn3K7mjPh2iw4Fot1BybC2qe7/jcDjQ6/WEhYWhVEqUv4KCAjw8PAgLC8PT07NCdaZSqSr8/Vf/90frrExRcPmRgez4KRJd0WrCtUFUBU66dGxFBEGBaLOStXEaos2CrSgL56pN8O07ncJDcaj9qsjsLFF0YLi0D/3FPdJs+JsLKD69FUGpxqN5b6kyfnCNknM78X/93/JnFRz8DnVADdwbdXn28D3eG2poDDR1zudcqTcPrG6IoojjqfMl2swIggKvske8bL2LI/ceOTk55OXlkZeXR1FRkTzc9fT0xNPTE51OJ/dRL2vqcXPnt/j3nwlKNblbP8av38yK1GmHneyfZ2HX56EsT66WrDuo/apIw3KHHZVPKL7REyp/A6uZgiPfo1FrwDuMgkMrXjiB+fTn+Q+YjXPVxqR/Owy7Pg9BqS7H0toRVGoUWlfcm/ZEf2kfiA7UflWluYXWMbjWi0RAIH35EMIm/kTZvUuIljJc6rRFQYaesAAAIABJREFUNJehcHLFknOP3F/mETxqJdkbpuH72iSKTm5A6e6L2juUwn1LUalUctL08/Or9ED7Xy4Wi4WzZ8+yfv168jUB+Lw2CdODq1iy7uDZZjDFp7dRdvs0TtWb4t64Gyqdv3QNKpSViE4ZK0cTEPMpmavfR6kLQBAECVetVJfPc3gQMOhj9FcOIppLsWTfQddqEHm7FuPWuBslZ3cg2q0SXA077Zs1YOvWrbi7uzN60Qb257hINO0/MpsFHDYzM7rXZlTH/xsTZ/8TRtrKlSuxtR4pT168KMrSrlD021qcqjVB4eSGrSgbR2kxlpy70kPRYcctogfO5X0lkDCTgsIJ36h3mRj5KfOGdmPdunWcOnWKVatW0bNnT6ZNm0bt2rX/rq/zp7E37ziHvpqCe7NemNOTca4eQfHvW1A4ucmJ7zHwW3TYydvzJdrQuhiuHsKlZitESxl5vy6sREUVBAVuTaIxppzEUVpM8emtFXDH4pMVK7xPdNgrDbWeDq1SoFOL+vx4Jl2CeUElqLGgkvC7ha5hnLUF4ldk5/UezencuTNNmjTB4XBw584drl27xrVr10hKSuLatWtkZGQQ9nId7mWdwrvLaEzpybg17Ix3l7HkbJ6Nb6/JaINrIYoi+fu/wW4sJGjIUhlO9Gj1OPx6TalkUvl0OKuVzOwdwe1G/2LtlRIEtVZWcvur4VwtQhLk6Ty63G7pOD7d3qfweDzGG7/h3rgrulaDsJXkkblmPMUnN1B4dDXYrCAIPFjYDxQKBIWKopMbERRKgkd8S9Gx9bhHvCaP5owpJ7AVZuITPQHzvYuEhIQQGhqKh4cHJ0+eZPTo0QQGBhIQEEBAQID8+4us4v/u2L17N8uWLcNkMjFiylh+U3lSZrdKsDCVBs82sXg0703p7dOydKdot/Js5hMAW0kOWT9OQtfmDdwjohEUSrm94NYwSsboO0x6jElHcZj02PT5snN24JtfYLh2GKWrJx2a1GLTnBEoFAru3r3Lti8msmrbAfY/cDwXIaNVKTCbzYQqS6hmvcWZ+N2M6rga+L9tcvm3QsY8nFQYriZQcPBbiWddHkFDlqDy8MOSe5/8XYvwHzhXxveVppzEnHkLrw7DJPC16KgAKH86bChYeCgV17C6DBkyhNjYWC5cuPBCN9h/KpKSktj58Qjcw1vh2rgb5vRkBJUG/4Fzyf5pBqa0y+haDULjVwW7oZC8PV+CQoktIwWlmw+agOq4Ne5K7vbPymFSNlzrd5JdB4pPbEDlGYjPwLnoL+6RMKZndmC4loDCYcdus6D2q/idn2XgPR2izUxRyhniTC3+lMoMSEwhtZbiGp04lXODtW+8QV5eHlFRUXTu3JnOnTszYMCTkcm6dev417RZ+HV9D1VQHXLOfIytOBuvdm/h02MiOds+wa1BFB6v9EPpokPXahDZmz+S4YG2wkxyd36BoFDisJrx6Tr2SasGUAgwtFWVchq0DVtJLrbi7AquFH8lfLqPI3fnFxWPjcOOvTgbjX91VN4hZG/7BKXWDY+W/VGonXFr3JWHS2PxiR5HyZkdINoJfHuxXGEXn9mGTZ8v069FuxVj0hH8Yz5FUCjxdtNSbLdz8eJF/P39KS0t5ciRI6jVamw2G0ajkZycHLKzs9FoNBWS8It+BgQEPLdX+2eRmZlJ//79OX36NJ07d2bTpk14enpKmGugzPpkqC6ppHWU//ZsHVtxYw4bdoeIwtkD94geiFYTmWsmIChVcqWrv7gb0WEn8I0vsBVk4NVpJMZrh+RKt/T2GQmpUz76uPPIn7hAG6NGjWLo0KFMmzaNPu0i6ENFhExRmYXff0ugVb2qTBsYyWudI+k/dixLlvzIql8Ocs7o/X/a5PL/OemKoogoiigUCmoHeqBSCjiHv4Jf74qWLKLNiqBU4dV5FNaCDIqOx0snqLQYh6WUvJ0LyuUdzbLe6nNDqcZYpTVdqvsxZ84c/Pz8XrzuPxBnzpyhZ8+ezF+0hIW3vaWTKjpAFFG5+xA0dClFx9aTHT8FvwGzJdGemq0QnFxxlOllRTWF2gn/1z8ic80ESlNOoms1EIVXMOaMZMyPUvDr/28ElQaPFn0pTtyMxyv90TWN5jWn2+Tozez+decL2XePQ3Q4UAkiIzrU5nuVCjv/mWi61SFwx60hmxNO4yXqOXToEIcOHWLatGn4+PjQuXNnGjRoQHx8PD2nLee3LGn7vr0+RF/eg3YKq0/Q219SkLASR2kxXpFDKbt7AbV3KL6vfQCUV7q9p76w0nWIsOpoCltO3qDMpsVWlEnhsfVy0n0sQPNYt9aSc4+s+CmVaKr2klzU/hXdgBFFXOq0w7l6BMako2A149NvliTI7upN3o4vABFBIwH6nao1J/unmRKD8vYZSs7tIPCNz6V9+m0dlqxUAt9aiMrNG8FhJe3gOsLc3Bg5ciQ1a9Zk6NChtGjRgjt37nDjxg3u379PlSpV6NatG9WqVSMoKAidToezs7OMCDp9+rQM9crKyiInJwdnZ+c/Tc6BgYH4+/ujUCgYP348K1euJCwsjLNnz9Ks2ZOR72Oxnb9CdhEApSCiTz1P0alNOIXVo+TsdkJGfy+3CAuP/4gp9QKe7YfgXK2JBNl7kIRXh3cwXjuEvcyAaLfi22MiIGm0RNSpQcJyCUa2aNEiBEFg4sSJ8uf6uGkrkHquN3clMjKSOYMusG/fPtq2bUvbYdOZ97sRQWV9Tvf+P3O3+Cfj/7mnu2fPHvr27Yuzs7OEwTOWITrslTQKRKuJgJhPJSD6U2G4moA5/QY+0eP/8k5rlAJdyo6z+cfVfPrpp4wYMaKSdcs/GcXFxeh0Oln8JXvrp7jWaYtr3SfMF9FmQVBpsOY9RO37hBBQkLAKpZsXupb9eTy+f8xaelGIdivYrESHWvHMvcb58+e5dD8f1+b9UIQ2kCY8nurNOqxSbzZvw2RKc+6j1fnhUD0ZUjlMBpzC6uPb84mBZPHprbILwtNhNxQQHNGRGbGdqF+/PvXq1UOn03H58mU5CZ85cwb3Fv3IvXyYSj0LQOXug3eX0ajLiREFCSspvX2G0DEShTRjxbv49Z2Bxr+q9JmlxRKhpny0JNqtPFozHuF5UpaP3XddPAgYJLkOWIuyKDjwLQGDPpZXsxZlkbl6PKLDJqES7HYcZiNKV08Ch3yJOSOFgv3L8Y/5BMPFPbLZpsNkwLPdW+jP70LhokNQqrDk3EPp7I7DbsP3tQ9Qe4eS8/MsPF7pj+lhEqYH11A6uyParahL8/jk44+5d+8ee/bs4f79+8TGxjJo0CA6duyISqWSE3BycrK83Lp1Cz8/P+rUqSMvdevWpU6dOnh7e1NYWCgn4T/7+RhCFh4eTkRExAuTdLZVy4oT9zh6MxeHw8HTukpqhYQdtqdfxc3bn1KVByICShcdD74cgHONZtgKHmEv04PdisNSJpsRuNbviGgzo3t1IA5LGaZ7l7AbCuTRgfHMFib2asnMiaNJSkqiQ4cOnD17lmrVnnlAPhPz58/n2LFj7N+/n3mbj7PqXD7CCzzqnheP8dP/ROL9o57u3y7tGPnubM6dPFqh0i1Lu0zh4e/x7DCU/F2LcVjNqH3CsBvypQpFrUXp6oU17wFKDz/shkKcqzXBYSnDknkb13qReHcehSg6KDyymrKUEwT4+/HF3FksX74cu92Oq6srN27cwMPDgzVr1rxQR+DvjCsPi4hZdZoy638hruGwSVK7StVzn8qP47H8XxPhHud/WsLhw4cJCwtDFEXu3LnDb6cvsPNqFncLzBQZzWgEO+62EspuHOVu8lUEjQuh436sAMMyXE3AlH69wmRVydkdmO5fea4LgkvVhvSoruXWtYtcv35dxkQ/XmrUqMGik9lcLnaqgMG1l5WQuXoculYxFP62FrdGXTDfvyqNbkwGNIEvIzrsWDKSUeoCZIUua25aBcIIQN6uRaj9q6M/t4Og4V9LEESHnUffj8Wvt0QNfRzWwkwKDn5XIekC5O5ahOneJXx6fohCocSYfBzvrmPRX9iN/vyvUtvLOwSbPp+czR/h0bwPTlWboPLwlQgbWme59WV+dBPDtQS8Oo54vhmlw4Ey+zrG/UsxGo307t2bSZMmMWjQIF577TUuXbrE+fPnadOmDT169KBHjx4VkozdbictLU1Owk8nZa1WWyEJP/49ODhYPv43btygX79+3L59m9dff52pU6dSWFj4h8k5Pz8fT09P/F+qgSWkCUW44BdcBZO+kKJ71/Equsncjz/m48vqChorD5YMImx8PChUPFoxkuB3V5C/Zwmu9TqAoMRh0r+QIv904rNYLLRs2ZKxY8cyYsSI567/dNhsNlq2bEnv4ePZmOX/X92Hzmolm95t+bcrvf1PpR071g7g+JozPPxaAuarvYIJfHMBBp8w7Pp8lB7++HcZjTakDuasO+TvXUbw8K8lYPWGaYS8u6KcKruTgJhPUbp5kxE3Al2bwZTeSsSac5fgUato7pTLzJkzSU5OZtKkSaxatYqxY8fSpUsXEhIS/idJt1GYJzOja//HtkTOagXTujbg1O6f2P/AgbZqBEqFosIkQWX5v24s9iilffv2HD58mGrVqhEeHk54eDiPJdPtdjvJycmcP3+ec/4W4tPv4QhpJDHAntmHZ/0a/sgFQUDEu2k0I1s2JSMjgzt37pCamsrWrVtZsWIFRqMR9xZ90bV9s0JyL9j/DW6NuuLepDuCxonCIz8QPOJbylIvYEq7jE+PieT+Mg/ByY3A2PmSsFHWHfJ2SWw+yUdNxH/AHIlQE1AdlU8oBYe/x6/nJEqTT6D2DkUTUF2asHmsWuWwYzcW8mh1ZUidWiEwqmdb1u6XSBK24hzMGckEvrUQQaUl+6cZeHYYjm/vqRLqxGGj9GYiSg9fig4slxN56Z2zeEUOe6H7r2i3snZyLBndqjJjxgzOnTtH165dsVqtBAYGcuTIEUpKSjh48CB79uzhk08+wcfHR07ArVu3linOr732RK5TFEUePXpUoSr+5ZdfSE5OxmQyER4eTk5ODg8fPqR69eocPnyYtm3b/iU/PrvdTl5eHteuXWPKlCncuXQJp9BQ6tevz6mkU3jXqsXHPx7EXDMKQaXBmHKK4lM/IVrKyFz7gaQsp1BhvHYYU3oyluy7qP2qgKB4btJVCtA23I/u9SUls08++YTg4GDeeeedP91XkMSa1qxZQ/f521FX9fnT9XO2zEXX9g1ZVc6Se5+ilJN8W9P3hfrM/0T87Un3JW8XWkR2ofjVsRUSkVend8hcMwHnGs1lV1ht4MuI5lJsRdmU3T2Pa60nidLl5RYyxlPp6oVoLsWUegG3Rl0lXc+Xm6DT6bh+/TqTJk1i27ZtHD16lA0bNvDNN9/8saj33xj/UT/sGdHqIa1nsm/fPoaNHkf7YVMJqt8MvcmGh5Oa2kHuleT/HmvxRkZGkpCQQHh4eIXtK5VKufocOnQoaWlpqBp044pQOTGIz9TXf+aCsOO3cxy5sR0XFxcUCoVUEfn7y1TqNOeXufeUbob+ygHspSX4to4BwK1eBxQaFxROT2QnBUHAtV4HrIWZiIjYTQby9yzFs3Uspbd+RxNcE9O9SzxaPU4imCQflxKrQknGyifmohkrR4Nox3/gx6i9glD7hBI8/OtK39mSm4b9+Com9G4pJ121ZyB+vadiMxSQs3E62pcaoAmoXm675IPGvxr6S/sIKHehdljKENROCIKC/H1fP9dOXrBbcbq5D8MDZ2JiYujXrx/ff/89n3zyCTabjaVLlxIfH8+HH35ITEwMAwYMwOFwcP78efbs2cOHH35IamoqnTt3pkePHnTv3h1/f3/5mD1mSkZFPdEyFkWR2bNn8/nnn6PRaOjVqxcWi4UhQ4aQm5tLeHh4pTZFeHg4Wq10bTgcDo4cOUJcXBxHjx4lODgYpVLJzZs3uXPnDr169eLs2bN8sPkyOy4/ApBYmLVe5eHSWIKGLCF3+3xsRZlYCzJQewbK8p4SM61y2EU4kpxFy5RsarpZubDtIBcTtv9H921QtZpoqzbhRTWuTZ8naT4olFhy7lF0/EcUaiecqjdFtJQh2q1/qM/8T8Q/4pFW1ceV16LrVEhEosUkiWSYDBXWdanVitLbpym7e6GCOv1jHU8pnjoJ5Sfk3KljGMsVk2rUqEFSUhIHDhzgq6++YsyYMaxZs4bly5dXMCv8p+LPxF/+SLS6e/funD/1G7GxsRSf3saPP/74h5OD7733Hlqtlg4dOnDw4ME/FPQQRZEyqwjPxayL8jrYbbg37YlHs16VVsv68UNcwl/BmJ3Ko5QUNBoNpaWl+Pr6otVq0Wq1CDXbUeIhYrm9W9KHsFvRn9uJ/+uzydu5AJQqrFmpEiLi1E+SbKfVJPVpBQW2wgwMl/bhXKM5bo26ovIOwalKIwoOfkfwyO8QHQ4yf3gP5xrNJc7+M/56T0f6t8Platth0uMVORSbPh/DxT04rGacnZ0J8fEg6l9LOZ4kvaf01mkKElagax2Le6MuOKxmSm/9TtDQpVjzHkgTloB3l9GIDjtZ6z7AJ3oC+fu/kRJMOQ5ZdDhwUitoqsnkbu41EhMD6d69OxqNhrFjx/L2228TGRlJSkoKzZo14/vvv2fGjBlMmDCBd999lxYtWtCiRQvmzp1LZmYm+/btY+fOnYwfP546derIVXCTJk0qJKajR48yePBg8vLymDx5MvPmzavwusFg4ObNm3KbYuPGjSQnJ5OWlkZISAjOzs48evQINzc3+r8xlGlDZ/HTvmN41ylgxq6bpF1OpNfANxAEgRLTE1ji0xhpQaVG1/YNrIWP8OowjLxdi546Ky9OojZRABGSipRoo6dSt9co3LIu/aVJQp1Ox9YL6ahUKuy25480lc46PNsPQVBpKTjwDe7N+0hCXCoNeTu+QOUZQP6xeIak72PGyBhatWr1wn39u+JvTbqPWUogJaIGITq+OZzCrh3bKbm0D5/u4yk48j3G67/hWi8SAO1L9Sk68ROitQxLjmT857CUYdfnVdq+U42m6C/sBYuJjJMbsBsKiI2NlQ/UsWPHWL16NaNHj6Zz5860bNmS999/n2nTpv1XEJv/JBqGehL3ZrMK0JYSk/WFVevTERoaytGjR/noo4+IiIhgw4YNtGvX7oWfNWLECJycnIiKimLfvn00atTouesFBgay4+cl6E2V8bsuL7cA/twFwZL7gNztn+HpombPnj3Uq1eP2bNnExERQUREBEmZej4/a0JtLCH/wHcoXTxwrdtecgFRqhGUKtwadsGpZ8NK+/BgcX9Cx8WTt1uayPKMHIpK50/O1o+lSRhnN9TeIRQe/xGFszsOkxFL1u3nstweh6BUEfJuHADFv2+RqlKlCvdmvTGnnmXB2q0sG9ObV4M0JOr8y7Ut4vHvNwtNoDQ77igtxqNZL5Sunog2C9aiLDJWjgIERKsJtXcwat+XpJaEoMBhNaNUKqntbiPv+EZGz5rAOxvzSUxMrLBvbm5uREVF0a1bN4xGI+vXr6d///6cP3+ezz//nGHDhjFhwgSZ/Th8+HCGDx+O2WzmxIkT7Nmzh5iYGAwGA9HR0bRu3ZoVK1Zw9uxZoqKi2Lx5M56elXuTbm5uNG3alKZNn6A9EhMT+fbbb9m1axcRERHUaxvNLXU1ttuDcBy7h0IXjosOdlx+hGgL4pq6CiU/JCK+QEMZKB+2P0mwDpMBc3YqCqcXK6uZH93EWpAhwdMUWgKjxzK2ZSCv+tkq9Jtv377NiRMnKvShzWYzAX2mIFR75cXXg0pN4dE1OMpKsJXkUnRsPTjseHYYhsNsxKWOdJ+dO74F+/AXE7T+zvhbk+7OnTuZNGkSxcXFbNu2TZ7gqlKtOk7O0PbVRuw87ULBb+twfrkFCq0LxuST2IqzcG/YGcOlfXh3HQuCAtP9q5Tdu4hztQhAUqsvOfML9pJc8jJuIAgC1atX5/79+xgMBvLy8iS/p7ffZsmSJQwYMIBBgwYxceJEGjRowPLly+nS5UVsrb8vnoW2/NVQqVTMnz+fdu3aMXDgQMaPH8+0adNeiMp488030Wq1dO3ald27d1eAAD2O1atXE7ByJxtO30MRILUiSm+fQRtSW9bqfZELgq04B882g8naOIOQXh/w9iuhvPnmEwGdX3+VIGElJiv+o35A6eyBX9/pFB5eJVFIn3Z6dki06Gc9xVQe/ohWM5qA6lhy0hCtZgxXDyFonLEbC1G4eGLNT8dwcTfOtVrj3rg7uds/w//1j2SkQ6V4HoROUKBwdiVs6CJiXqnOZ6WlLPtkGiPmrWZ3ugrtS19X3C+dPx7lzEKVzl9GWQA4qRW0D/fjyoWzuPsEUL9mDU7u2Uzy3tX8nnSZXr9+wZ07d8jMzCQ7OxubzYZK9eQ28/b2Jjc3lyVLljBhwgQ++ugjjh07xrhx4ygsLKRx48ZER0czadIkGjeWpFC1Wi1RUVFERUWxZMkSUlJSGDFiBD/88AOCINCsWTOio6PJy8t7btJ9HCUlJcTHxxMXF4fZbGb06NF8/fXX7L1VIo9KEWVBvCeHT6XFLsLRW/mIoh0BoYIOCEiSpPbSYmzF2TxaPR57SQ6m+9dwmA0onNwxZ5TTckURpc4f/3IKuOnhdWlSuXwbBRf3MveQktcaBuPnLhUps2fPxt39SVvqaer5sDVnOJNeWRBd9rFTKNC1GiiZ1ZY/EES7FdP9q3h1GC4d37D6KO6d4NVXKwtW/RPxtybdfv36cfXqVWrXrk3VqlWJi4tj7ty5/PLLL5SVlZF08RdqNG1HhjoUhdYFh9WMNesOGv/qONd8FeONY2iCaqINroVb3faYs24DEDpWYpkEvrUQW1EWhYdWoNE/Ijc3F5VKJf8UBAG9Xs+mTZsIDAykTZs2bNu2jb179zJ69GiaN2/Ol19+SUhIyB99jf9fo1u3bpw/f57Y2FiOHTvGjz/+KPfzno0BAwag1WqJjo5m586dlS6a3Nxc4j8dh7nua7iUJ13zwySKTsQTMPgzlE9VIJVcEC7tRX9uJ6LNQtrK9yjQjiciIoK9e/eyd+9eOnbsiMEmEFz1ZUQUCEg+dv4x8yr15Cw5d8nf91U5jlYAhw2H1YyjTE9G3AiJBqpxpuDID1gepSDaLPgPmEPOlrlkb5yOoHbCvVFXtEHheLZ/i+yfZhD41sIK9GI5RIfc73WY9NKNJTooPh6P4/Kv1F1ZRm5uLmfOnKFZs2Zkzl3BCbs/gkr7hygSRAfOGvWTfnzC13Ro3IGhgxrzXcHvLDzpwpYtW/j666/p27cvzZs3JzU1laSkJDl5Avj4+JCSkgJA1apVWb9+PVevXmXGjBlcv36defPmUVRURI8ePahbty6TJ0+mc+fO8jHduHEjY8aMwWq1snz5ct566y0SEhLYs2cPCxYswN3dXW5DtG3bFo1Gw6VLl4iLi2Pz5s1ERUWxdOlSOnTogCAILzQ6fV4ICgUCCllDwlqQgeHqIUSriZxtn+Ad9S4qXQDBw7+i5MIunF5qgPnRTUz3LqFrM1hWjoNyUShRxJKdKtHbkWyeXOu2Q1AoMIR4U3zxF4qLizEYDNy6dYvU1FRSU1PZt2/fX7ZX9+s3E4fFJDlVCFIrw2Etk1uZD796g5BRq+g7+csKD8d/Mv6RT5k5cyYajYZXXnmFsrIyXFxcuHPnDnkFRWRp62IvLQIkrypr/kMEQwEF+7/BYSkja90HTzYkihiuHiLo7cXS7LrGGRCIqPUSPTq9xcKFC/H19SUzMxMPDw9yc3NRKBScOXOGwYMH4+fnx/jx44mJiSEpKYn58+fTqFEjZs2axfvvv/+nB/n/Lyrhs+2GjRs3vrDd0KtXL9avX0/v3r3ZsmWLrJJvNBrp168fI955h4zqPTiUnI0oglfHdxAPfkfOz7MIiPlUpmI/7YKgdPfBrUk0Xu3eImvjNNq9PZnrieu4cOECb7/9NpcvX+bSpUtsPZNGUJ8p6M//iuHqIRwmAz7REyhO3IRoNYMgYCvKxpx5G6WLB6Ldiu7VgSic3Sm9fQZrzj2cazST2knGIny6jKbgyGoEUSy337bj3rQnprTL5XoJDixZqQQN+wqVx/MlLUW7TX5Il5zdLqm62W14t3uD1+r68PueTbi7u1OrVi369+9PZmYmPyxfz9YbxS/sx5ssFqxpl/goto08cWq322VEQPfu3Zk+fTrx8fGMGzeObt26cevWLXQ6HYmJiRWSrre3N/n5+RX2uWHDhuzevZvjx48zdepUSktL+fbbbyksLGTSpEkoFAoGDx7MmjVruH37NoMHD+aHH36QXZz79u1L3759cTgcXL58mT179jB16lRu3Lgh6x6PGDGCGzduEBT0ZK5k7KQZrFq1EhHJu8ytYWfMmbcoPrUJ0W7Bo1lvnGtII6iMVaPl+RhBoSRk7FpsxTlYMm/jP3Cu7FIiKFXcX9gXbVA4pcknsBkKsOvzsOSmoVA7I1pNBI/8DktWKvn7vsKa9xBbQQa24hy8u4zBtU5bRJuVAz8vwbUoFUuZkVq1alGjRg2qV69OjRo16NOnDx07duThw4eczBIwhL1S2WFEdCA6bNj1+VKb6anKXHTYUTh74FKrNY4yPWq7idpBlX0F/6n423G6c+bMqVDprl27FoD169fzc8JZUqv0kKl5jxWDFGot+fu+xrlG8wriyU+HKT2Z/H3LwGZBZSulZo3qjBgxgkOHDpGYmIiXlxd3796lXr16FBYWkpGRgaenJ35+fhQUFDB69GjGjBmDXq9n7NixFBQU8N1339GyZeXPu/KwiOW/3XkBlfD51uj/VOzfv59hw4bx/vvvM3369Be2G44cOcKgQYPYsGEDTZo0oWfPnrRr144FCxZUwhM/Vs+yF2fj9/psstZOxKNFX9ybvlaOPz2MOSNZElwv06MUpCRTrVo12fLF3d0dpVcwBosD3avcFnZhAAAgAElEQVQDcQl/hbzdS3Ct115uCYGEr7WXlkhUz2dUqOylxZJmKyKixUTQsGXk7VqMoHHGt+ckMr4dTvDI77AV51B4eBVBQ5egurKd3PR7ePeqjBp4UQh2KwWHV+GWdZkrV66Ql5dH3759iYyMZOnSpfIM/ov68Y11Zjq3bYm/vz83btxAo9EQGxtLz549GTx4MAB169YlJyeHU6dO4enpSa1atXBxcaFjx47Exz9xxz1+/DgzZ858YaUmiiI7d+5kxowZ+PlJrMt///vfnDp1CrVazaRJk5g2bRo6ne65709JSWHFihX8+OOPNGnShPr165Oenk5CQgI1atSQq2AnJye6x76D+rV/YzMUkLl2IkFDlpD98yyZUp678wuC312BoFSRtfYDgkd+9/Se8rwJMv3FPRQcipPFjESrCUHthK71YBxmA8akIzLj1Jx5Wxp1DZxL5vpJ+PWZjsrDF9FmIWPFSKYu38zEbg3w9fWluLiYgwcPsnfvXvbt24e3tzddunTh3MVLZL4yDjtK8nZ8jk+PiRVsrkS7DdPDJJSuXhQe+QHPtm9IBI20y9hLSyi9cQxt0Ms8SDqHn4fzX7ug/kL8EU73H6dxWSwWHA4HBoOBIouUwES7TaIOq7Uo1FpsRdkYr/9G8amfyFw7UV4KDsbJ23EKrUPIyDicqjbBo2pD+g6IYdSoUfj4+NCqVSsGDRokyxE6OzvLT8W0tDSKi4vZsGEDtWvXZu7cucybN4/JkyfTr18/Ro0aRUHBE7fZ+NNpxKw6zaHkbEwWKyZzRdVck82B2ebg4I1sYladJv502j96/B63Gw4cOED37t3JyXm+oFDHjh3Zvn07b775JqdOnWLMmDEsWLAAeIIndi43sBMEAd/oCXhFvYvS2R3/2HkyO0gbXAufrmPxjhqFk39VNBoN27dvx2azsW/fPmrVqoXBYGDhwoXoC3IJHPy5XA1JG698Selavk7wiG8JGrq0whIw8GOJLqtQ4VS9GQgCdn0+ztWbSo7Nzm5SNVy1Ec7VI7DmPiDz+hlM6SlQki2jCl4UEkRPgXvqIXwKkykqKqJXr160bduWyZMn891338kJF57045cMaswPQ5qzZFBjRrWrwSuN6vLhhx+i1+tZvHgxgCwQ/jiio6MJDw9nw4YNBAQEMGvWLLKzszl58mSFfXpepVtxnwX69OnD1atX8ff3p2PHjpw9e5ZvvvmGM2fO8ODBA6pXr86HH37Iw4cPAeke27x5Mx06dCAyMhIXFxfOnz/PoUOHWLJkCVu2bCEnJ4dFixZhNBoZNGgQLVq3R+8aCgqlZP7q4S+z75yqNMSpSkNU7r7YS/Kw5tyrpPVBuVHls+Ee0QNB7YRP93H4dB+Ha91IaVsePlIyfKr1ZLyWgFuDTjhMRhxmIyVntvHo+7FkxU/Bbixm6aShvPzyy7LW87p162jevDm///47ycnJhIaGohAdaIseYHl0E6WbF8YbxzHdvyot6ckgCBQeWY3dKI2uHZYy8vd9DYKAOSMZ377TsOY94ETCvj+8lv7O+EeS7pw5cxg1ahQA06dPp3Xr1sybN49LezeSFT+FrPjJ2IqyAKnUz9+3DJVnAB6v9JNvSJV3CC61KxIc7KXFlN76Hb3FwdcHrtKoWwzj5yymadOmxMbGEhQURKNGjcjPzyckJESWHWzTpg2lpaUYjUYOHjxIjx49WLx4MXPnzkWpVBIaGsratWv58Xepv3VvzYeIIhiTj0tCzeXhMJeSt/tLab9FKM68x+z4w9Rv3gaLxUJcXBxlZWV/+/EMCQnhyJEjNGvWjIiICI4dO/bc9dq0acPu3bsZNWpUhYkHkNAkM6Pr4KxWIgiSWPdjFID6GY0CAXD1CeSjeQt49ZUWNG/eHKVSyaxZs+jRowfOzs4UFhbStOsABJW6kryi4frRStqxzwuFiwfWgnTcm76Gf99pqL2CcWvSncdaakpXL1xqSciU4C4j+GxED4K0Vmz6PExH4xAyrqJRCjipKl7GTioFWpWC1i+5YT2wkJ61PUlJSSEiIoLTp08TFhbGoEGD/nT/no5p06bh4eHBZ599xv3797Hb7RVGHdHR0ej1euLj4xFFkQkTJuDk5ER2djaZmZnyej4+PhUe8s+L48eP89JLL7Fjxw4mTZrEp59+ypw5c1i+fDlffPEFly5dwuFwyJjs4OBg4uLiGDNmDA8ePGDevHkVRKAsFgtHjx5l8+bN/Pzzz2i1WiJ6D8OUeh6boQDTwyTsZSWofcOk4b3DjjHlFKLDjto3DEv2Xczp10n/5m0y4kZQevsMAAKS1bzoeObh57BT+NtaCn9bS+nt3zGlXabwt7WUnN5aQQnPbjJQducsJed24FqnHd6dR8kPZ6WrDs+okYSEhODu7o5CoeDs2bNs3ryZBQsWMHnyZGbOnEn9xhHkpd3AlH6D0puJiHYr5qw7mLPuSBbt2amodP4U7P8G88MkChNWIggK9Od3YSvKovjEBgSNCzExMVy7du0/uib+2/hHerpz5syhatWqcmJbvHgxXbt25dKtBzgP+lyWwBNFkYIDy1F6+OPXdwaZG6ah8a+OOesOgkpTSaeh8PD3uDWMwlrwCLfWb5B58ifa93sLbd4tfvjhBwoKCvDy8mL37t0kJiayaNEiWrRoQWBgIFevXqVly5YUFBRw9+5drl27xtixYxFFEQ8PD0a/Px5FYC1UXiFY8x6QtWEajrISRLsNtXeIZJkDWLJTydowDZXOH12bweSe+RVHsZWztzNJTExk9OjRlY7H3xEqlYp58+bRrl07YmJiXthuaNGiBfv376d79+6YTCZ5+At/DU9ss9tR5d5k00fDaRTmxb4V8+TXv/rqKxYtWkTLli159OgR/1qxu5Jovf7cThxWkyTyU87WKk09BwoFTmFP7JRMD65RcOBbXOu0R39pH87hryCaS3Gq0rACf14AnNQSoSTr5FZ8fX2ZPn06o0ePRrx5geFjJxDRbwy3cowVWgJV7JkMGzyAuXPnMmDAAHr37o1SqWThwoXMmjWLFi1acPz4cXx8/pzJBKDRaFi3bh1du3ZlzJgxaLXaCpVumzZtePDgAUFBQSQmJtK6dWtiYmJYv349v/0m4bBBqnQLCgqeS97Jycmhf//+nDp1ik6dOrFlyxYZjTBy5EgWLFhAw4YN6dChA3q9HpVKhZeXFzk5OahUKllHGiR9kL1797Jz504OHDhAnTp16N27NwkJCdSuXZsJP1/k0qnfyN0yF4elFF2LvjLiRH/+V4qO/4hXh+GS6araCc/IYbjV74A5I4WcbZ9KLSSVGkdGEv4+3uRrg6TJMaWaoGHLyD/wHX79ZlBwYDnuTXviFFoZT+7XazLFiZspOr6egDcXVHp9YO/XWLJR0owWRZHMzEyZcfn5558jCAKr439G4e4PiDisZsrunJXWt5QROORLBIUSt4adKU7chEudttIEmsNOzrZPUen88en2PlqFSDv1XVkX+p+OvzXpJiUlcfz4cX799VdZJenBgwcYjUasViud+sRw8NRPuLd5A5uhgPxdi1Hq/PHpPk46uYKCrA1TUPtWQeNfneLTW9G1fB3RbqP0zlnshnzcm/WkOHEzgiCg0vlhV6nR1G5DDW0JuT8tZd26dcTFxVGzZk3atGlDSUkJO3bsoEGDBrzyyivs37+fsLAwvLy8uHTpEk5OThgMBhQB4fj3/whRdGArfIT/gNkYU04imkvRBIWj0gVI1vFtBmPT5+Napy0l53aAKGLOuc/YSdNpH+5DVlYWgYGBf36w/svo2rVrBXRDfHx8JXRDkyZNSEhIoGvXrpjNZoYNGya/9iye+OzNdA4cPUG3ju1oXjOEvo2DiWozg7SLL1M/+DX0er2cHB5XaIIg0LFjR1ZPH0Jp/YEowyQMrq0kF4m2O7sCPdZhMWFMPiEn3cf0Ud/eU9H4V+XRmglkrf8QhcZZuvEVkui7o7SY7DXjCHBTUbXLaiYtXMjGjRuJjY3l8OHDJCUlMWnSJLb/tJ4tW7bQoYMkTbh161beHjuWdevWERISQrNmzejVq5fsq1enTh1ef/11GjVqRGJiouSp9heiVatWDB48mE2bNlGzZs0KSVej0RAVFYVKpSI+Pp7WrVszYsQINm7cyNdffy0n3cfi5Xq9XraZstvtfPDBB3z77beEhoZy+vRpWrRoUeGzTSYTrq6uuLi4cPLkSUpLS5k6dSqTJk1CqVTy008/MW7cOAwGA97e3ty/f5927drRp08fli5dWumavJiwA5VnAD4xnyCKDnI2fYQmuCbaoJp4tOiLS+22ZK3/F07VI3Br0El+nzakNiqdH5acu2iDa2Exm7n34wxcvPxR12yLwjsMhWcoHhHRZG+YimizVpDpfDocVhNlqefweHUAeTu/wK/P9KfcV0TWffUZK4fvQaVSoVQqUSqVqFQqRFGUReHd6rRBCG2AaDVhPbRShvpht0miO+UIHbVPGF7t35ZeUyjxbPcWJWd+ASBj55fkRPf+U4Gdvyv+1qTr5ubGsGHDiI6O5tatW6xYsYKmTZvSrl07vvzyS2o3bk61Jm2w7P8G3asDcWvYGdd6kdJEybH1WPMf4lq/A5ZHNzE9vIY2rB7m7LsUJqxE41cVv74zsBZmYs17QFnaFdwadiZv12JMTm7cfbk5Lu4eJCVdQ61Wc/v2bW7dusXNmzdxd3fn9OnTnDx5Urbeyc2VlJTMZjMOBByFmTxaOxG/vtOxGwvlStejRT8EhYqyexcQEDBn3Ua0W7EVPkL36kDydi1E6e5DWnom330yWXYL/ifjcbthzpw5REREEB8fT2RkZIV16tevz5EjR4iKipIxmU/H4/7lqHY1+KrsChu/n0LcyZOoVCq++OIL/vWvf7Fs2TLZIaJVq1a4urryzjvvsHDhQhQKBQcPHuSNURNx7vMRCid3PFr0wemlBjxaOVqaLVaosBvyETSuKDROMpRLtFkQHTY0/lUpOrGBgEGfUHh0NYJShU+39zEkHUV/bgeerWPwqNEETcICYmJiWLZsGaNHj+bzzz+nffv2tG/fnjfeeIPXX3+dqKgounTpQrt27Vi+fDkHDhzg5s2bvP322yxbtqxCxR8dHc3x48fp1KkTjRo14sSJExVMTf8oFixYwLZt27hy5QpWq7XCa9HR0ezatYstW7awbNkyGTt99uxZ0tLS5CH/4xaDh4cHP//8M6NGjcJqtfLVV18xduxYeXuiKMrU3ISEBAYOHMiuXbto0qQJKSkpzJw5k6pVq9KyZUsePnxIfn4+jRs3JicnB3d3dyIjIxkwYECFSbfS0lLOnz/PvUsnUftIbE1BUEgjzIybCEo1Gv9qqDx80QTVxJqfgTk9WYJylVfCdn2+3Lt/vVc032yeI2//ypUrrDv9kPX3JCdelXcwmWsm4FKrFU6h9VD7VcFuLMSQdBTz/Su4NojCo+lrOIXWw1aUhcLVE9P9qyi0LlzbuQqdkxK73S5jc202G48ePSI1NZXp06djVgmUFWcj2izgsGMrzpZ2xG5Da3tyfkpvnyZj5WhEqwltSB28okZiK3yEw1xK6Z2zaPz+M+ur/5f4W5Nu1apV5QuruLgYs9nMypUrGTBggAx5GjRjGVu++hhEEdd6kRT/vgX9lYPYS3JxqdUK3+7jEe02cn/5FGPSUYzXDuPbawou5epXot2GwtmDvF8X4tdvBqLNjMrDD5vdTrHRRI0aNahZsyZdu3alS5cuDBw4UIbWlJaWsmjRIr766iuCg4MJDAykrKwMW1hT7BYTaq8gyY7b1etJpWsxSRjNatLkjmu9SGz6fEz3LpC3+0s8Xh1I0bF1+HceybgPpzN/+kS6dfvPHA3+m1CpVHz66ae0bduW2NhY3nvvPaZPn16h+qpVqxbHjh2jU6dOmEymCvqkT8f777/Pr7/+yueff86sWbPo1q0bCxcuJCYmhnfffReAU6dOVRoOd+nShYTjiTIy4jHLDUFBQMw8bMXZiA6bjGYwpd9A418Nuz6P7E2SuaDh6kHcm/XCtXZrik5sIHNt+T4KAirvEATgQVY+40cNY8WKFfTp04fhw4fL++Dp6SnjVPv378+BAweYP38+GzZsYPv27SQkJDyXsdesWTMuXbpE69at5RFQ27bPV8J6OnQ6HatWrWLAgAFs2rSJ119/YkPVvXt3pk6dSr169di7dy99+vShVatWHDt2jIkTJ7Jjxw5AajFcuHCB6Ohobt68SWxsLKtXr5av0/z8fNatW8eKFSvQaDSMGTOGH374QTasPHr0KDt37uTixYuoVCouXryIIAjExcXRv39/BEHg4sWLLFq0iCpVqtC2bVv8/PxISkri+vXr1K9fH4VLKKXJJ3B6qUG5i8YxfHt+SO7OLwh6axEOmwVL5i00XcZQfGJD+SizF8arCaBUo/GrimC3smnlEk4uSpYfyosXf4nC3Qe3BlEExM7Hmnuf7G0fo3ByQ39pH9bcNOxlJThVbSwlvJSTlKacxJJ5G01QOI4z27CX5NLm7cncv3Wd27dvV1qcnJwIDw+npKQEq+UqZoXENlW6+1CaInnU4bBj0+fj3WmEZKVVpy0+3d6n9GYipvtXULl5YzcWUnJ2O6512xH60v+myoV/ADL2Z/EsfMmck0bOz7Nwb9Iduz4ft0adKTq5EUv2XdwadsYrcmiF94t2GwgCpgfXUHuHkrdrEd6dRkqmjjYL2StHUj3Enxo1apCens7du3dp3769nIRffvllzGYzy5cvZ+rUqahUKjTewRiLCxBUGgIGfULerkUIaie50nWp1UpKBoICjX9VbMXZOL3UAOfwlthLctH4V0fp5oX6zFo2f/0pvr6+eHt74+bm9j8R3cnIyGDw4MFoNBri4+MrVdsPHjygU6dOvPPOO0ybNu2523j48CFNmzZl3759NG3alPPnz9O7d29u3bqFq6vrH37+swD7snuXMD24hvHqIXStYyRnAYedgkMrKLv1O841X8WtQSe0wbVI/3Y4wcO/ouzeJcwZyXhHSUlegp9FovYKJn/zLN7oG012djY7duyopJhlNBoZPHgwBoMBX19fNm/ejJubG6dOnaJhw8r046cjNzeXdu3ace/ePTZu3Ei/fv3+cP3H4ePjg9Fo5PLlyxVsoho1akT37t25c+cOW7du5fPPP+fLLyXg/fr162nTpg0vvfQSubm5NGrUiO3bt1OtWjVEUeT06dPExcWxc+dOevbsyZgxY3j11VcxGo0cOHCAnTt3smfPHqpVq0bv3r3p06ePXKEfOHCAKVOm4HA4iIyMJCcnh8TERMxmMzqdjoyMDBo1akRaWhq+LzemKOItMr8fi8NmRqHS4t6kO57t3qL4983oz+8q7+MOwbV2GwzXj1Fy9hdshY/QBNTAu/NoNP5V0aoU/PZBG94fOZQjR45gMBhwa/s2JWe2ETDoEzQB1SlLPU/RyY0EDSmfgHbYebRyFAEx8yqI1mesHC3Tt0WrGeOvn1LdU0V4eDg1a9aUFfXCw8Px9PTEarXy888/8/2Juzzwaozh1hkcpUW4R/SQtynaraBQoT+3E7uxAK8OwzFcO4ytKAvPtm+Qs+1TzBkpVHt3OZP7vvJfMUlfFP9Tacc/i2flELX+VQka8iXmzFvY9fmofMLw6jgC4/Wjsj8TICn5a12kE5J0ROYqWnPSyNu7FJAmXdQqJSkpKaSmpmK32wkKCuLOnTtcuHCBDz74QJ7AeNwX0mg0aBq/Btl38Wz3Fgont0qVrig6pEk9UcQnejz5+7/Bq8NwcrbMlZ7aoXUxZyRjK0inX79+iKJIYZkNVXgbXEPC0bjq0AoOPEQD1cgmQCeZOz69eHl5yb97enr+R+yYkJAQDh8+LLcbNmzYUKHd8NJLL1WoeGfPnl3pYRAWFsbSpUt56623uHDhAs2aNZPbQv/+97/5o3haaa3MbKLo2HqcqjQkeGSc7IMmKJT4dB2Lvf3b6M//SnHiZvz6z3yyEUHAeOO47AxtK87Btb7Uo3WIkq7GxYsXKyXc7OxsevbsSd26dZk2bRoxMTGMHDmShIQEIiIiZAGYF+Gb/fz8uHDhAt26dSM2NpYvv/yS995774Xf9TFhxr/3FAqNJvp8sZ2JQwcwoGkYPm4SO9BqtXLo0CEKCwuJjIxk0aJFdO3alcGDB1NSUoLD4WDSpEksWrQIvV5PXFwccXFxGI1GRo8ezeLFi7HZbPz666/MmzePEyckimrv3r2ZP38+oaGhAGRlZbFjxw5+//13EhMTSU1Nxc/Pj3Xr1hEYGEjv3r2x2WxcvnyZ9PR0zp07J2mjtGmOYChE0Djz0vvrKxAHdK8ORPfqQAp/Wysrwpnunse9cTfcm3R/+nRR3bmMjq1bcOvWLZRKJb0HvsHlKn1RuugoObdDtldX6Z4kV8PVQyic3FF5BpC3Zynmh9cRNE7l9OFxiBYT9eo3IO3mhRcWLAaDgW7dupGdnU3GoyxMVqvk7ycoKDi0Ak3gy/J38u09BXPWbZzC6kvaHTl3UXsG4TCXYivORu0bhtLNiwDDHTIynP4nbNX/eaX7OKTq6IkKmTH5BGX3LsrC2qW3z5RbkUv2NnZDAX79ZuIUVk/ehiUnjbxdCwl+Z7n8P/HaXopOSBMZ6enp3Lx5E5VKhc1mo0WLFrRp0waNRsOxY8c4deoUQUFBmN1DKNV4SuB9QUFpyklpGFwO3ndv3A1bcZbk4hv+KobL+/Fo0QdL7n3JQcBkRBNYA5+sc8SvW0vciXvPJVaoBUlQsYraQC37fRRFDykoKJCXwsJCCgoKKC4uxs3NrUIifl5yft7/T5w4wZAhQxg7diwzZsyokKRycnKIiooiOjqazz77rNJFLYoiMTExBAcHs2TJEu7evUuLFi24cePGC6nIT8fV9CKWJNzi2K0cMtZ8IFUaz+J2RQcqzyD8+88CeFLppl3GnH6jYqVbvwNqzyCyf5qOj5NAw4YNmTJlCp06dUIQBFJSUoiOjmbIkCGEhYUxbdo0VqxYQd++fRFFUUYq+Pr6smPHjkqTU0+HzWbjzTffZPv27fzrX/9i/vz5FY7PHxFmVIKIUqkkspYfrXQGls3+FzVq1KBLly4MHToUNzc3FArJRDEyMpKaNWvi5eVFYWEhmzZtomPHjvx/7L13eFR1Gvb/mT6TTDIpk14oAQKEkgICoQtKL4KggAp2WCyUFRUXKSJiYUGXIohUgaVKpAmEIr33loQWIL1NkunlnPePIUdCUdzd37u+v2vv6zpXJmfqac95vs/3fu57+PDhREZGsmnTJtLS0rhy5Qpdu3alT58+dOvWDV9fX86fPy8F2EOHDmEymUhKSiImJga1Wk1ZWRkXLlwgOzub4OBgioqKCAwMxGaz0bBhQ65cuYJLlBP8xvcUbZ6J/cZpr4uGdGgEAp98FV3NpjhyMyhc9wkh/cZTeXwj+iZPV+NjCy47xf/8iFbxUdSqVQuPx4NPSh9+zlHgQe51j5ErMB1YhehxEdj+JdzmUvKXjEIZEE74C19Qsu0fKPxDUIfUoHTntwQ9NRxPcTZx6gqO7Uz7zXPtwIEDdO/enZYtW1KoieSOW4+7shSVMZbKEz+hq9McbWwTVMEx5Cx4g/AXv6J057cItgoC2r2Eae8S9E27YM06TGzjVjRQFtK9y1NSOe3fxf9V54g/gnN3TBJ9qfRMujfo9vqr1DL4W+6wAKW7FiLX+CI4vPYzPvVaEVN2lqC8o6SleQ+a0+lk27ZtLFy4kF27duHv74/ZbKZly5bo9Xo0Gg0F+jhOnTqDPrkH6tCaWLOOoqudjLu8EKV/KPY7l3CX3sGZf82b6W77Bp/6bRHdTkz7lqGNbYIz5zJyWyn+rYega9rlD+nq3g9BECgvL68WiB8WnO9fV1JSglwux2AwUFlZKbViR0ZGSsFZpVIxb948mjZtykcffURwcDCBgYH4+/sjl8spLS2lSZMmLFu2jCeffJJRo0bhdruZPfs3fOuoHpREUcRmqfSyEeQKyvYuQaZQEdB2CKLHhehyShnw75UXlP5G3Nu/4naWV5Lwiy++QKfT0atXL+bNm8enn37KqVOn2L17Nz/++CMNGjSo9ruKi4vp06cPR44coX///ixbtuyRinOiKPLBBx8wc+ZMnnvuOZYuXYpcLn8gQfit46pRyinb9T3TX+vBggULUKlU7N+/H6VSyc6dO+nVqxd6vR6r1cro0aNJSkriwIEDpKWlYbPZ6N27N3379qVx48acOnWKQ4cOcfjwYY4dO0ZYWBg1atRAp9NRWVnJ1atXsVqtJCYmkpSURGJiIo0aNeLGjRssXLiQY8eOERcXx7lz5xBFEafTybNjpnEgD4p/no1/i364K4oIbPeid/vvOvciio8s4VXtJ2X+RaKub+HGjRvk5eUREBBA9IC/YQqorvFcuOFTfONb45vQgcqz20EUsVzY7Q26P89GaQhFFVKT0u1zCeryF1xFNwn3FHN5/5ZH7ufc3Fzq1KlDp06dmD17Nia5gc6vfYijNI+gzq8jetzYrh7Deu04Sv9QnAXXpJu8/dZ5ijfPJOipN/Gp2wJ3eSGFqyfgKsvj+a828MGA9v+RLtM/bdCFu2r1lXZeXnaSi7nlyGRyyn5Z6rVwbvqrKlhVLbeKiO8suE7h+k+IfHUOrrJcijd9ha5mEkrRTfmZ7cTExFC3bl3q1KlDnTp1qFu3LkajkePHj7N06VIuXryIXq+nsrKSsMgoilwadHWeQBVaG8uF3YT0fZ/KMz/jyM1A6WdEWysJ094l6Go3w3xuB8HdR2G/eRpNdEN0tVMQXXYKfngfTa2kB+rQVRCctrv6EVC2ZxEqpZJZX33OCy1rkpmZSb16j5YsfByIoojNZqO0tJTCwkJmzZrFli1beOWVVwgNDZWCc35+Pnv27EGlUuHr64vJZMJisRAQEEBQUBByuZzs7Gx69uyJwWBg5YpgeX4AACAASURBVMqVjBkzhvj4+Acy7cDAQFafzPnNoHRv0L0fVUHXfvsipn3LpWGh6HER1PlNFPogSleMZeUPy+nduzcymYxx48bxzTffEBgYiK+vLw0bNmTlypUSBeth2LBhA8OGDUMQBBYtWsTAgQMf+dq5c+cyatQo2rVrxwuT5vP5jsw/5AwiF1wEZf/CydWziIyMpH379qxduxY/Pz/8/f1xOBwEBgZSUlJCeHg4vXv3pkmTJphMJollc+fOHWrUqIGvry82m43s7GyCgoKk4FoVaGNjY5HJZNy5c4eFCxeycOFCatSowSuvvEJZWRkzZswgOTmZ/fv3YzabMbTsj/XmWQypzyPYKnGZ8qoFXZlcQfmRdQ+U8FT3qroJHgRzKZ9PnYReryc9PZ2SkhIcLV7m/I41aGs0wSc+FcFpI2fOMCLfXCC15nqs5RRt+FQKuvbbF5CrtLiKb6EyxiK47GhCatC/65M80z6Zdu3aERT0q2+fKIo899xzBAYGMn/+fMDLH5+56QSals9jdz94Aooel8S8EEXB29p+X6uwx2JCZTD+ZjL0R/Cnqunejy1btjB69GgsLii1OhFFEGwV3oN/l0cHgMdFQPuX8G3YHrepgKKN0wl6ajhyjQ+a8DpEDPsatymfkq3fSNledHQ0UVFR3L59m927d3P16lWys7MJDQ2lfv36CILA1atXsVSUE9RmGIraT3hZEc98CIBfYlfs10+hbdwJTXhdDK0GeIW2E7tgubgXZVCUN+AKAoLbiSCKjxTXFkWBvMXvYuw1Fk1kPHIfA26nnU+3XkHIz+DtoQO5du0aRuPDhVweBzKZDB8fH3x8fIiOjmbZsmXs2LGDoUOHMmLECKZOnSqVGyorK+nRowe1a9fm+++/RxAETCaTlDlPnTqVvLw82rZty40bN1i9erXUXHLv4oxtQUDHV/6QIWA1CN6WcJ+6LfCpe78uqki0OZNSwcPAgQPR6XQ0adJEyuTGjh2LRqPh+PHjfP311/zlL3+hcePGHDlyhDFjxpCcnEzDhg1ZuHAhmzdvZvfu3Zw5c0aq3W7atOmhgvF/+ctfiI6OZvBbH3I17Rx3FgwnfPBnvzvykjZJrqIwug11W5zHU3SDbdu8LaZRUVESb12lUlGnTh3y8vKYOXMmWq0Wg8FAaWkpJpMJnU5HfHw8bdu2JSkpiaZNm1YLPuBNWLZt28b8+fPZv38/gwYNIi0tjRMnTjBx4kQaNmzIN998Q3p6OjqdDpvNhkypIXTgFBQ6P8zn0jGf3e5tKBBF1KG1MPYai6HlsxhaelkZUgnvHicOZ8F1in78jK+//poGDRpII6z83StwFt7B0MbLSS4/tBq5Vi8lGvfDp25LlIER+DXtQsHqCUQMnSk9dxCBjHW/8NJLL1GrVi06dOhAhw4dyMzMJCsri8OHDwMwZ84cZs6cyd69e9mfJz705n/vNSmTyasFXO/zSq/mgwg2l4dPt3plKP+/cgr+r2e6VSg2O2j9+W4cboGyX5Z5W0KbdH7gddarxyndMdc7K960i7TebS5F4XFRtOxdZKIgZRJ2ux1/f3+aNWvG888/T8+ePbHb7WRlZXH16lWysrI4evQoGUV2fPt89JuuvA+DKIp3NQBkVJ7c5O1fbzsEURSkzrsqVBxPw3J5H+EvfkXliZ8Q7GYC2w3BuXEiY18bzJgxY/6lffd7yM3NZfDgwSiVSkkbALyz/n379sVoNLJs2TKpm6nquaSkJKZNm0b37t2pV68e69evp0WLXwPjlL/PZdL7o7325HI5fsk9UQaGU7ZrIR5rBSCi8AlAFDyILrtXeUwuB2QodH74Nn2ayhM/EfXGAhT6QO6H/cp+SrfOZOCAAfTu3Zv333+f7OxswGtNNHHiRD766COuXLnCV199xY8//oharea7777jk08+kYTWT58+zbx5v4q1nD59mt69e5Ofn8/kyZP58MMPHzppM+CbnRzLsZPz7Wt/KOjCXQ3h26fJXzcVlUqFzWaT3DZyc3MlsX+l1pf4Hq9hqNkQwW7m7A/T+Gj+BlKMIv/4+xds2eIdZrvdboqLiykqKuLKlSusX7+e7du3o9FoiI2NRavVcv36dfLz8xFFEVEU0Wq1KBQKLBYLCoUCt9uNf4v+BHb0NsuYz6VXy3QfhoeV8KxXj2E9uhZ7biZ+fn5UVFR4b5xhNQl+/nNkWh8qT22h4nga6tCaCC4Hof3+hkypqpbpih4XRRum4a4sRt+4syTxWAWvl2A96iuL2bt3L2lpaRw5ckSyHtq9ezdWq5UJEyZQo0YNRowYgY/eD7tbRJfYA/0Tz2A6uNpbU747+ixK+xxdrRT0TTpjubyfst0LkSnVBHd7B21sY8zn0indMRe5xocgXy2j3n2b8ePHM2nSJOx2O9OnTwfg+eefp2vXrgwbNuyh++2/KnjzuDDqNbSvF+LVwxDciMKDbgeC007l8Y0EdxlZLeACmHYtpGjle/Tp1ZN9+/YxdOhQwsPDiYuLIykpiZycHCmDeeKJJ5g7dy5Go5GJEydy6NAhSrJOMaFHAkoefxgJYL2420sxu2d23JvVjsJ9n/uFX1J3ZHIFHkuZtM5lKqTM6mLwy/+ZAv7DEBkZSXp6OqmpqSQnJ7Nnzx4AfH192bRpExUVFTz33HM4HA7pPb6+vixfvpyRI0dSXl7O5MmTGTduXDVNhd1XCtDVbUHMOz8Q8co/MF/YhdwnAMHjIWzIZ8S8uwqZUkX4kM/wf+IZ/Fv2p8a4NKJGLETwuNE37ULsmLUPDbgK0UNipC+9e/UiLy+P119/nYKCAhQKBaIo4vF4mDBhAiqVih49ekhiNi6XiwEDBnDlyhUOHjzI8ePH0Wg05OfnS9uXlJTErVu3GD9+PBMnTqR27dpcvHix2vcXmx2cK3I/aPn+mJDJ5chiEvHvPgZ99/cI6jEaR+12RMXVZ8CAASh8/Ihs0R2/Zr1xxD9FjiqKy+dOoWrQkYWnShm+vYz0o+cIqZeMVquVmnoSExMZOHAga9eupby8HJPJxOXLlzly5Ajl5eU0a9aMoUOH8t5779GiRQsEQZA67mQyGZiLJXW/+yHVdO/CWXAda8ZB/Jv3wTehI2W/LKV053yEikJUd5k/lZWVBAUFYTAYEJ1W3NZSijZ+jvnsDkL6foCxz/vIVRqKN33pPXcEQRIq8tgqkWl8kKt1mM/txLR/BbabZ3FXFOGxW7BYbUzfnoUuKp7XX3+d3NxcVq9ezZw5c/j5559xOBxotVqmTZvG0qVLSU5O5sqli2RnXSbgziHc14898vh4zGWU7vyWsEHTCHlmPMVbZknbX3VOd5u0nKVLlz7gAPLv4r9eXrgXIzvUYX9WsaTofj/kai1hgz596HMxz35YzUo5JSWFqVOncvjwYVauXMmlS5dISUmhVatWFBcXs3//fjZv3gx4bW06derEwIED+aBrPWbsuoHd5fldUWvR7aTy7A50daoPi2UyObq4ZpQfWElwt3ekgylTqgi/r8dcaQgl9sXppJ0v4OWWaqnd8T8NpVLJlClTaNu2LUOGDGH48OF89NFHaLVaNmzYIBkorl+/XppoatGiBW+++SavvvoqaWlpzJw5ky1bttCzZ0+KzQ6u5FdKn6/wMaCLa44zLxNtZD20d81HtTUTsWdXFxJR+hlR+hsRLGVgqM6KEAUBrVrBhB5NeKFlb3Jzc+nZsyc9evQgIyODunXrsmDBAtxuNydOnODLL7/kl19+ITs7m7i4OCIiIggODubs2bNcunSJzExvNrZq1SqKiopQqVSEhoYSFBSEw+EgJCSE3NxcGjVqREBAAJ9++inBwcF8Nm8Z104cRlOjieRsAFB+dD2VJzcjU6oJ6vQ62lpJ3Pl6MNGjVpG/ZDR+Kb0QXDY8FUUY2g/FcfOMd/iuUBLQ4WXy6rXkVsltIv8ykPJDa5GJUFUu9lSWoI1tjCj3jjgUQdFo2g0hzp7NjZ3L8PHx4dlnn2XQoEESDXDy5MnodDqmTp1KcnIyhw8fZuPGjcyZMwer1YpKpSI/Px+FQkFAQADPdEhkr1YrWahL5QUAwUPYC1+guKux/LASnsdShv38Tob0fgqF2JHFixdTUlJCnTp1yM/PJ/f7t/BP6YWx52iKt36NXOOLf5sh5C96m7xFbwMi7rJ87sx9GY/FhELnhz6xK9bMo1Sc3Izs5GZEtxN9Si+cdy6CXEHrRQ6seddITExEFEVmzZqFKIocP36chg0bSvX5I0eOUKdOHWJjY9Hp/SgpuPXI68F69SjamARJCF+u0uAquf3reSjCkVwXnZ7u9tiC6Y+LP1XQ/XcszT/qXv8B73qZTEZqaiqpqanMnDmT9PR0VqxYwebNm2nZsiXjx4/Hx8eHH3/8kS1btrBq1SpEUSQ2sQ3hHV6gWB3upfrca3rncXl5vrkXkF3YhqvgGiF9P3zgNxla9CfnuzfxL8vDfvMMFSfSfm2jNJchWMsBEfP5dORaPW/NcTDSYUXftDPasNp4Sm7huPwLOMzS0Pfev496/HvPy2QyBEHg008/Zdq0aQQFBUn97FWCQSEhIdUCf25uLpGRkSiVSvr3709MTAxCfCfcwv2OlyKmX5bhd4/BpaHVQJDLMZ/ZLq1zFt/ycrLvsXsX7oqey3Ivos07xtc/5zHdZiMrKwuDwcD58+eJjIxErVbTpUuXatvVrFkzCgoKuHXrFg6HA5lMhl6vx2Aw4Ha7qaysRKPRYDAYCA0NxWg04vF4KC8vJz8/n6ioKBwOB0VFRYwcORKdTodbG0DUiO+xXj2O9ZJX1c128wyW87uIeOUfeMylFKwaT+Qr/0AZFInblI/CLxhXyS1Jb8BVeAPbteNE/WUR7rJ8Kk5uQt+wHerQ2t5tvb+kIQjI1D7Sv3K1FrfDTmFUG0bO7M6EQR0AbyPEm2++icVioXv37lgsFsaMGcPNmzcJCgoiNzfXaxgq89Lsxo8fT5cuXXj22WdpVK8224+dhihv04i+aZcHygv3lvDurbMLDgsymQxr5hFWXqrgzTff5NixY5w9e5axY8dy8uRJjmTcZsohKy5RhrHXWCqOrPfy50NqEPnKPxBFkfxlYzD2Huc1iLw7WRfQZjD5P7xPSP+PUOi8E6KlO+fj37wvKv9gcr9+nuTkZL766itOnjyJj48PTzzxBFqtFqPRiCAIqFQqXnvtNQRBYO2uo4i/0ZjkKrmN0vCrHoUh9TnkmupNQDIgs6CCWrH/We7unyrowr9naf5bUKlUdOvWjW7dumGxWPjpp59YuXIl+/bto1u3bixevJgGDRqwc+dOVq9ezbE5byPT+aOOb0tw7SaExdQkNjyEQLmDW7+sZf/OrURGRqKPjkfh+yDFRK71Rd+4MxVH1xPc9S2JWC563OQtehufuk/gsVYgWE2EDZqGXKWutq0apRyx3Yu0qR3Iq6kxJIR7hTuq6nUPe/x7z9/7uMoKfNWqVcyYMYPU1FTcbjfvv/8+t2/fZuHChfj6+iKKIlevXmXQoEGsXLmSjz76iD59+nAttC0/bfxR+r3uimJsWcfQxCRUmzi5lwdaeXIz5nPpCFYThjaDUej8cFcW475zCVlFLs2NAgXZV5k9ezbHjh1jwoQJdOjQgRMnTjBz5sxqxoqP2u41a9awZMkSLBYLoiii0+kYP348FouFefPmkZubS1xcHDVr1uT06dOYTCaCg4MxmUwoFAoEQcBms+Ebl4pMqca3fmtK716Mtmsn8E3oiEKrR6HVo4mIx377IurQWtiunUAdXgd3WS4eazl+KT1R+ASATEbRT1+hDo4hqPPrgLcd2nzmZ+T6QMxnd6DwC8YvsStyrR7B8atbtuhyem+SciXfnypj1sdJVGZfRBAEKWDn5+ej0WhwOp1YLBasVqvEkOjTpw81a9bk2LFjHD9+nH379rFt2zaim7ZGGZXgLeF5qpfx7i3hVdNJxqvyZ88+R0xUBOdPnpfkQ+vXr09RURE9evTgwIEDyIxWJv6wi/KbF/Fv2R/B5h0RWa8eo2TLLJSGUIrTPsdjq8Q3vjWBT77idYgW3FLABbDfPON9TvAQEBrJk08+yZYtW3jmmWdISEhg0qRJmEwmcnNzWbJkCfv37yc0NJTMzEyKsjMJSnkO210ZyvshOKwo/X6dtPZt2P6B15hLCzmxL53P3x/Jpk2bHvo5/wr+dEEX/j1L88eBr68vgwYNYtCgQRQXF7Nu3Tq++OILLl++zLPPPsuUKVNo1aoVZ8+eZfPmzWzYsJbja65w7u7JnZSUxFtvvcW8efPwS+n7yO/xS+xG2Z7vq60r3fkt6qj6qIw1UNjNKHwDKPjnBIx9xqH0+1VmsCq73nO1lMM3y6Uby3/SQmjWrFn07NmTl156iTfffJO//e1vrFmzhhEjRvDGG2+wbds2AgICiIuLY+LEiUycOJFZs2YxcOBAOk3xKk/Zso5y+x8vIFdp8W/eF2dxtrcp4i6sGYckxwi/lJ4EdhiGqyyPgpUfoo1t4s2eDi9h5F3X5nr16pGWlsaCBQtISkqipKSE06dPS3VJURQpLy+nuLhYmliqelxcXEx2djYWi0VqA7darUyaNEnKjFUqFTt37sTt9gYblUpFeXk5Pj4+aDQayfZJFO4Rs7l3QvRusCvbu+RubV6GPfs8lisHUPgGItgqERwWClZPJHTAx4QN/ozC9VOxZR6i8sw2Yt5Zge3acVTBMd79JIqSDY46og6O2xchoSOiKOIouIai6pxQqFA26UHTACXt27fHbDZz5swZzp8/T3BwMDk5ObRp04bs7GzCwsIYMmQICoUCu93OwYMHpVJaQkIC2dfOEnh8Df7NBiLex7b5rRJecPd3KNv1PbfO/ixxu7VaLRqNBo1GQ3l5ObVq1aJJkybowxpTlHMby8U9BPccA8iQKdWojLFSAmK/fQGU3u+3XjmAp7KEwvVTEexmwodMB7kcmUKFYLfglqsZM2YMO3fuZM6cOdKIJjAwkD179lC7dm1mz57NzZs38fHxoVbbvtjD6zwy6MoUSkSPC4+1nNzvRyK6XRJr6d5zulnPF0lJSfn/f9CFf8/S/I/AaDQyfPhwhg8fTnZ2NqtWreKtt97CZDIxaNAghgwZwsSJE7Farfzyyy9s2rSJLVu2MGPGDDQaDTabFT+PCx5CFVMGhBHyzHjAa+JXtmshottBSP+PMZ/1Drf9knuATObNfuu3wb95n2qGi1U0lk82X2LFsVtcL7IA91sI5TMzPfNfshDq3LkzJ0+eZPDgwezbt48VK1bw7bffMmrUKDp16sSOHTsIDg7m7bffZtOmTezZs4fU1FRybnhNQ3V1WxDS51frnIqjG3DkZUr/ezPA6j3tqsAINFH1ceRloPAJxGmzYTKZmDt3LoGBgXz++ef4+/uTk5NDQkICw4YNqxZcdTodBoNBCpRyuVxSjKuoqAAgOzsbg8GAIAg89dRTZGRkcO3aNZxOJ/Xq1SM6Oppjx45RWVlJWVkZDRs2xG63M3z4cPR6PTPmLkRw2bHcOINg92ZqurhmlO1aiF9iVzSxjak49iOaiHoY+4wjf+lo5IGR3uGyDCKGzcRZcI2KYz8iV+vwadAe66W9FKZ9gS3jEDK5wptpCh5M+1dg2r8CY9/3sWYeRlujqdTtqPT3Utpkcjn6+JY4bu9h2bJldO/enXfeeYddu3axe/du3n77bRYtWsSnn37K66+/jkwm4/Lly/Tv35+MjAyaN29OUVER4eHhfPfdd7Rq1eqxmz688xcungwoY96h9QiCwJQpU1i8eDFTp06lQ4cOOBwO7HY7U6ZM4datW0x7vQ83K0TmnLZQUWl5wD24+sd7qDi+EW1sI4y9/kre4nfxWMpwm/LJWzLKq+pnKqBB3doEBARQp04djh49isPhIDMzk9mzZ6PRaAgODsbHx4dr164RFGXGF69Yv/3ORUp3LfSK33jcyFRqlIYwHLmZ5P/wPjFv/8Cdea9gvbQPTXRDUCiJedtrsdQy0XstarVa6dwCb9OVTvev2fv8aYNuFf5VS/N/BTVq1OCDDz7ggw8+4Pz586xcuZJevXrh5+fHkCFDGDRoEN27dwe8IjPp6ems37KDs6KI/fpJHDmXUYfXqfaZoihQfngdlae34p/cHf8W/cn9bgT6e9gX2tjGBD49AsfNM8g1PtXeL7gceCxliH5GLud5L35pYu5uPaxqFLDjUgH7Mov/MLk7IiKC9PR0pkyZQkpKCsuXL2fWrFl88MEHdOzYkfT0dEJDQ1m8eDEpKSl89913DP96HUrfBznFuvhUyg+vwVl4E4WvAduNk/g90Rfr5V8nIzzmMhy5GfjEt8GRl4ndbmfJkiVUVFRIGSh4dRHsdjtqtRq9Xo/dbsdsNiMIAnq9nujo6AeWqKgoWrRoQUZGBhs3bmTmzJmEhYWRm5vr1V/V67l16xaZmZn4+/vTtGlTOnbsyNKlS1Gr1YSEhPDSSy9x8MgxVn/7GuqIeEkDRFczEWejjuQuehuZQkVo/wkoDSHkrxp/91g5cZfloND5U7h2EqrQmsjVPl4/rooi5D4B6Ou3wXZ5HxGvz8VyYQ/lR9YR3GWkRI9U+hgo27MYmUKJsddfq+1bmSjS8+1PmDqkA6dPn2bIkCEkJSWRkpLC1q1b2bt3LwkJCVgsFkaNGsXixYsJCAggNjYWlUrF999/X02T44WWNUmI9Gfy2sOcLXQjeDzV+Na/jijD6FpDwdK/Lyc+fgpTpkxh2rRp9O7dmxdffJHDhw8zc+ZM9Ho969atY8CAASxZsoShQ4di3b8UT73OyFRaEAXc5YWUH14DgoAoivg2aIv57HYU9wz1q5T+Yseul1a5sg5yeYNX0lMmk3Hjxg3S0tKIjY0lJyeHjh074uPjQ/369fF4PJRkn6bYVITHXIozJwPBYqLox+nYs88R0O4FVCE1MR1ag9I3EI/FhGAx/eo9f/cOpJEJxN8t6yUmJvLee+9RWVmJxWLh8OHDTJs27XEvsfuP45+Dp/tnhSAIHDp0iBUrVrB27Vri4+MZMmQIAwYMkIj1byw7zuq50xHsZgxthlQrEwCU/DwbmVKN21SAx2rCVXQTuc4fRIHokUspXDsZdWQ9AloPonTnfHwbd0KwVWC5uBdHzmV86rZCcJix3TiDYC1H4RtAULe3JQfW++GdWGzwL5G709PTeemll3j99dcZPXo0kyZNIi0tjU8++QRRFNm+fTvbt28nOLImxVGtsN08Uy3TBe9ETNnuhYguB4ZWA/FL7o5p/woqjv2ITOV1p/VN6Iih7RBy5r6Mr9JbY7bb7ZKTh8vlIigoiOLiYgICAmjcuDGtW7emS5cuPPHEE9Um+qpKEKdOnZL+3rlzh4SEBJKTk0lKSiIpKYnGjRtL2cnJkyf58MMP2bNnD0qlku7duxMXF8eyZcto1qwZ48aN44dsH3Zeyke8z4DRkZeF5fwu1BF10TfuRO73I4l8dQ5uUwEl2+cQ9twUXCW3MR1YhW+DdhT/9CXKoEg85jLkPn64S3JQGWORa3xw5GSgMISgCggndOBkL6VKoXyk2EufphEEZWxi9uzZvPvuuyxatIiuXbsyY8YMtFqtpM9rs9kIDg4mJiaGqVOn8vTTT1f7zCtXrngtqpYvJyoqioEvvoKibmtulXt+c0R56NAhPvjgA0pLS5k2bRrt27dn1KhR/PLLL7z99tuUlpZy4MAB9u/fj0ajIaBmAu667bFmXyDo6RHI5AqJHxzQdggymRyP3YwzLwvLhV3eTHfJKHwbdcJdlgsyGaLHjaIiF2duBj179sThcHDp0iWuXbuGQqEgJSWFunXrcv36ddq2bcucOXNQNemOT9NuiEDJpi9xFlxDptahT+qGb71UijZOR3Q78VQUgVINgge5xheZUo3HXILKWAPcDk4e3k/j+DhEUWTUqFGsXbsWuVzOu+++y3vvvffI6+hP3Qb8/xKcTic7duxg5cqVbN26ldatWzN48GBqN+/IKz+ck+Qq74coePBYTMhVGjy2CgrXTCL02Y+R6/ywnN+F5coBwl/4AplCicuUT1n6AgI6DMN65SCi4Caw3Yt47BYKVryPTKn20s7kcmQyOcVbv0bfuFM1KxwAnUpRjULncrkoKSl5oA76sMcFBQUUFHjFoCMiIhBFEZPJxNNPP01sbCy7d+8mMDCQq+Ed0cQ1fyAoPQ5EQUBvukbW4nGSGlxUVBQbN24kODiYunXrsmbNGpo1a8alS5ckkZd9+/ZRVFREREQESqVSaoBJSkqSAmxycjL169d/LKU2q9XKjBkzmDNnDoWFhdSrV4/U1FT27duHUx+BrPPoB7rt3BVFWDOP4MzLxNhrLLdnPocyMALR48ZdUYgqMBLR7UQdVpuADi9TlPYFqoBwbDfPEDZgIoVrJ6OtnYKx+zvcmvk8QZ1eQ9+kM+Zz6ZTcVcz7PfTr148DBw4wb948+vXrR0ZGBkOGDOHs2bNotVpiY2OZPn06PXv2lIKtyWRi9erVLFmyhJs3b/Liiy8ydOhQEhISfufbqkMQBKkBxe12o9PpKCgowO1206pVK9577z0aN25Mo0aN6N73WX4+dwdlVEPc5QXIZHKUhjBcpjxElwOlIQz/Zr1w5GVSuHoiyoAwBJcdY8+xiE6v36BSDrMHJ/PRe2Oq8ak9Hg8XLlxg1apVrFu3jhs3bnhHM4ZAzIJKGjV6bJX4JnR4gKUhuOzkLx1D5GtzMR1YiVytw/+JZ8j59jWihi/kyfgQFg17tEjSb+FP3Qb8/xLUajU9e/akZ8+emM1m0tLSWLFiBYdGjiR54DvcCWmB836PPqcd+41T+MSnYs8+h+3acXzqtsB8djsqYw3MF/cS2v9v2G6cQhvTCIVWT+izH+Mqy0WmUOKxlOEszaEk7Qsvj1AU7l7k4fg2aI/1ygHcJXfw2CuRa3zxbdAO/+Z9sDldDJi0EOGX+RQXF0s25mIsHQAAIABJREFULkajkZCQEIxGo/Q4Li6OFi1aVFsfGBjIjBkzWLBgAX//+985cuQIK1euJCEhgbZt27JkyRL8azoQYpv+ay3AHhfqq3vweDwIgkDPnj355ptvJCHv999/n3HjxvGXv/yF06dPSxmsXC7niSeeICgoCJfLRU5ODpcvX6aiogKn04lCocDX1/exuc4+Pj5MmDCBCRMmcPjwYT788EOWLVt211k6H71+FZqWz3uHx3eh9A9BW6Mxzvyr3v8DwokYNuuBTLf80GpkMnm1DFMdVhtlYAQKH39s10+C4MZZ5KWW+cSnoolpiEyufKirMoDRdhvd5S3k5eVx/PhxgoODGT16NHPmzEEQBMLDw5k1axb9+vVDLpfj8XhIT09nyZIlbN26laeffpq//e1vdOnS5bHlQ61WK8ePH5dufIcPH8bPz4927dqhVCpJT0/nySefZPTo0UyfPp1p06YxefJklEol+9J/xlZhJbBBOyoOryX8pa+kyS1D6kDyl45FZYxBptSgi0vB2OuvlPw8G02EVzhHJoMuDcOIr+VbzVapygT022+/xWq1MmLECIYNG4ZKpSK1W39ulNpR3jVcdRXdrLY97vJCCtd/4lUvtJi8kpJuJ8hkmC/sBoWS3EVvs9VXTUmvg4/to/e4+F+m+x9AUVERa9asYcHuy5hqPYlMqZIuGsHloGjDp+jimiPX6TGf/tXqWVe3JYYW/bBmHaVs90KCu71D2a6FBHZ+A9v1kzjuXEJ02lBF1EW0VXq9pDbPxL9ZL2QyOY78qwS0HoTcN4DCtZMIbPdStUkrlRxWPFeLOtHhBAQEPKAp63Q6yc3N5c6dO49cqtpKw8PDMRqNXL9+neHDhyOXy1myZAny+Pb4tRuK8+FJ/kMhuh1U7F2C6cQmiVWwa9cubt68KQXXM2fOYLPZaNOmDZ06dZIy2IiIiAeG3g6Hg9OnT0tB4eBBr3tAamoqrVu3JjU1laSkpGp264+C1WplwIABXLp0iaKiIiwWCzU6DYHk/ogypdSh5iy6ScXRHzH2HM2tmc+hekSmG9jxVXIWvHE3kMqIeXclhWsno7xbXig/+E986rVCE17nV3+vR0DmcWHavwLLyTTatGlDeHi4pE6m1+v5+9//zssvv4xCoSAjI4OlS5eybNkyIiIiGDZsGM8///zvBhBRFLl9+7a0Lw8dOsTly5dp0qSJxHlv1aoVkZG/cqztdjuffebVYqhTpw5ut5sLFy4AoNPp8ITUw7fJUyh8A1H4BVOwajyG1oPwa/o0zuJbXurWXflWlTGm2u/RqRREHp/D5bMnmTt3LrVr12bevHmsXr2ajh07MmLECJ588knA2yqtUCho2L4XxfraaCLjvcc066g0YhQ9LtwVxZTumEfYc1Ok7ynZPgd1WBx+ib+6vrjTJnJi9+Z/yfPwf+WF/4v4+dglpv90mptOX29BXqlGcNoRnFasF3Yh9wlE36Qz9uxzWC7vI6D9UPKXv4ex52g0kfG4yvLwVBZLfeBVvfGluxdReWozeNzIlGpkah1yldZLKRJFBKeN8MHTkGt/dTRVK2Q8U0dFE1Uhd+7c4fbt29UCamlpKeHh4Q+dkKpaIiIiKC4uZsgQr0JYr169+Oqrr9ixYwezZ8/m+PVCyuN74PL9fV0CURDA48RwYzfnN8yt9lzNmjWl4JicnExiYiL//Oc/2bJli6Q/8LgQRZHs7OxqQTgzM5OkpKRqgeN+h42SkhJ69epFXFwcr776KgMHDuTLL79k/vz5nMouwa9Ff3zimoMo4jLlUXFkPcZeY8n9bgSRr8+TMl1j7/cw7VmMKAoEtHuBoo1fILrsuMsLiB29msK1kzG0f5GCH95H9LiJGv5dNc7oI7fL4+IfnQ1EBfszYMAAbt68iSiKqNVq2rRpQ2pqKg6Hg/3793Pjxg1eeOEFhg4dSuPGjR/5mU6nkzNnzlQLsi6XS9pPqamppKSkoNVqEUWR3NxcLl68KC0XLlzg0qVL6PV64uPjsVqtXLhwQXLjCGnVj/zwlrhQeN2CRRFn/lUpIP4WquYm2oTDzp07mT9/Prdv36Zz5840adIEu91Obm4ueXl5ZGVlce3aNVwu113evAxlYAQAHnMpotuJMiAc0e0i8MlXEQUPlSc3SZ5qnsoSZCqNdP2ow+Ko37orB2aOfKQU6G/hf0H3v4DiSjv/2HKcvWeyuH47D9ets6h9/ck/vRu5WufNhCLjceZfxS+xK6rgGNRhcTgLruKuLEXpb8RyeT+u4lv4xKfil9gVV1kuJVu/IXzIdEz7VyDX6h8QCbkfnmuHqV92lKZNmxITE0N0dLT0Nyws7LGH4R6Ph08++YQFCxYwbNgwFi9ezIgZK1l02oQoV/6ORoGIKHp7+cu2z8aR56WbNWrUiCs3c/BJ6Ej9lp1ISGpejXesV0GdOnXYsGEDzZs3f9xd/1BUVlZy7NixakNko9EoBZbY2FhGjx7NM888w5tvvknr1q35/vvv6dbNyymdMmUKkydPxhAahadGcwRTPuaso4QldsQqqgjs/Aaiy4ntximvU/SxjWhiG4EoUrj6YxR+QXjMZWhrJeE25XupS0o17tIclEGRCHYLuppJBD31cA2Oqhq48cqPHDhwAFEU6dWrF8uXLyc9PZ2vv/6ao0ePotVqcTgctG7dmieffJIOHTrQrFkzqWxTVFRUTQj91KlTxMXFVQuytWrVorCw8KHBVa1Wk5CQQEJCAo0aNSIhIYGGDRtWU0DLz8/nk08+Yc2uo+h7/03iAttvX6R40wwvfey+8onodnhbp1sP8kqAiiKG3GPkb/eWx6omWGvWrElUVBQRERFSZ2FZWRm3CsvIcgdRVlyI9cYZQvp9hDXjIIgifsk9KVw3GZ/6bfBL7CrxxnO/f8vLQAkIozR9AerQ2uibdMaRcwXTvmVEDv6Myb0b/ksT0v8Luv9lbN68mZkzZ+KIbsblgkr8knpQsPpjjL3fw12Wi9IQSu6C4YT0n4Dt+gnUobVw5GXhzL+KKigSURC8lCuZDNHtRKbSIJMrkfsYvHd1wQ1yJaLbiW/D9tUCcbSsjNKN06isrOTZZ59lwIABtGzZ8pH2Nb+HXbt28eKLL1K32yvcDEz+Q/Vc0eXAtOd7arhuk+tQ0eaNTzid70AUxWqW7VVUpQ7xIYQUnebs7p/+o+R08E4GXb58mUOHDrFp0ya2bt3qrQempnLx4kX69u3LF198IWn01q5dGz8/P86ePcv48eOZO3cu5eXlXlvwqAREpxXBYUH0uBFdDkS3A0Twb/ks9lvnCXtuMqLL6dVuOJEGyECu8NYS7zaThA35vJozyr1QIpD3wzisd64gk8lo06YNoaGhHDlyhLCwMIYNG8agQYMwGo2Ulpayf/9+9uzZw88//yy1BzudThwOR7UAGxcXx61bt6oF14sXLyKTyR4IrgkJCY8tPep2u3lu9i5O5jsfWZ+ugj37HCU//wNdrRQMbQZ5pRcFAeeNE3TSeMtZjRo14tKlS5w8eZITJ05w4sQJrl+/Tnyrp1En9uROcTlFm2agCq0NcjmukjtSJ5xMrUN02tDVaY710j6QK4h+ayl5S0ZLQbdk53zUobXxa/oU9tsXKT+4irDnp0oT0o2jDN7z9DGvm/8F3f8yunbtykcffURcQiJ1m3fA0OEVCtd8jF+z3vi36EfRhmmoQ2piaDuEvO9HEv7CF8i1egrXTsa/1UC00V7xmHsz3Sq4TQUU/PNvRA3/DkDygKvCM4lRzHwukYsXL7J27VpJnap///4MGDCA1NTUPxSARVFk5faDfLSriIqz29FGNXyg+eGB97hdEg1KdDkY2qoGSw9nV6t9PwxVTgyW/cvZ+NVYqQ34P4kdO3bwwgsv8O2339K6dWv69OmDzWbDYDBIWWB8fDxpaWmMGzeOKVOmIJPJOHLkCCNHjiQvLw+rNgT/fh8/Uha0ShwcHjw+9z//0Pe7HZTuWojnyl5JQe3y5csYDAbpWA4aNIhmzZpJbhOHDh3iyJEjhIaGkpKSgk6n486dO1y6dInCwkL0ej1OpxO5XC4xDe4NsKGhoQ+lrblcLgoKCsjLy5OG9g/7a7J5CHtjgZRVPgweSxmmX5Zjv3MJY4930URVd/1QIJBatJVzxw+RlZVFgwYNaNasGc2aNSMlJYVzVgOf78jC7vYguF24TfneTj/BgzXzCKXp85HJ5Mh1frjL8lAFRyO6nd7XGWNxFd9GGRCGX3IPrFePeSfc5Eo85lLkah0Kv2DcpTkYQqOIDvKVvO4eB/8Luv9FnDlzhueff56TJ0/SsWNHLt/IwWOIRB1ZH01kPSyX9iHYzYT0+wjb1WNYLv1CSJ9x2K6doGT7HIK7vYuuViKl6QuwZh3DU1mEJjIeZ8F1r0W5TI6rOBtVSE0U+iACO73m9XKrmQiiSF0fG4tfaSWZGQJcunSJdevWsXbtWkpLS6UA3Lp162oB2O12k5GRwenTp9m7dy+7d+8mLy8PTYP2yAyRWC79gkIfiLbGPRbnght9Ylcqjm5AE1kfn3otyf9hnFfOTyYHUcRdWYxMriTk2QmojbH8HpQIhOUe5ODS6b/72j+C5cuX89e//pX169fTpk0bPvzwQw4dOsTOnTtRq9VSvfO9997jwIEDhISEIIoiBoOB3Nxc3nrrLT7++GN8fHwY++1G1l71/K4esyPnMqb9Kwh7fqq0Ln/5ewQ+9Saa+xprEEUEj5OKPYsJLLlAaWkpnTp1YtiwYXTt2pU7d+6wefNmVq9ezenTp7Hb7YSGhtK0aVPi4uJwu91cv36dixcvYrFYpGy1Zs2auN1uyazyxo0btGzZkuTkZOrWrYvBYKCoqOihwbSsrAyj0UhkZCQRERGP/Lsxw8LXu69WF4u6D2V7l+DMyyTk2YffsOSCm3ZBZt7qFE/jxo2rTYTe70ANYLn0C+VH1nnLd6KIx1qOTCZDrvHFXZ6PwjcIQ+vnqTy1lbBBn3qTALcLUfRQtmsh6rDaCG4nqoBIdLWTkd1lMUQP/Jjjnw36Qx2w/wu6/0Xs3LmTzMxMRo4cSVZWFmZ1MIO/P4alspz8H8ahjqhHcJeRyJQqXKU5iG4XCh8DBavGo0/ugeXiHiJemgFA5fndlG77huiRSyhc/wnG3u8hQ1Yt07VdP0nJllkEtH8JfZOnEF0OStZOIFrnoV+/fpKZXxVd6MqVK6xdu5Y1a9aQn59P48aN8fPzIz8/n4sXLxIZGUlSUhL16tVDLpcTUaM2n+y4gcvziPPG40ZbMxGP1UTxphmED56OTKlCcFgp2jAVdWR93KY89E26UHlyE6LHiX+zPujimlF5eiumAytR+hkx9v0AVcCvs8ai28GXXSIZ2Lnlv31MRFFk+vTpzJ8/n23bttGgQQOWL1/OpEmTOHr0aLUhtNvtJjQ0lJiYGL766itee+01oqKiaNiwIWfOnOHy5ctERERw69YtNAmdCes6ArfIIzP4yjM/46kskayLBLuZvGVjiXz924cahTpuncfv+CLefPNNGjRoIJVEquq6NWvWRK/XY7PZuHnzJmVlZcjlchQKBc2bN6dv37488cQTyGQy8vLyHpqZ5uTkUFZWhlarRRAEnE4nERERxMfH07x5c1q0aEFsbCwRERGEhoZWmwcQBAGz2UxlZaW0mM1m5pwyc6L4t0dQ5YfX4LGYJF+8h6GWxsLpWW8wdepUVq5cSXx8PH4Rtfl+zU+EDJhE6c75aKIb4NugHcCvTThqLYgiosdFcNe3MJ/fRdjAyRSsmYTHUkrEizO8I6174Cy8QdGGT4l4dbZ0E8hd9DYxAz9m3IC2f6gz9n9B90+Gqrt0RcHtajoL96LKeaIo7QsCO75M/ooPvN07ljJkKg2i2+kVWHHakGl0RL+xQHqvqzSH/B/GEdLnfbQxjXBcP0bhhmmo1WqvbKHbTfPmzQkPD8ftdnPlyhWysrKIiYnBx8eHwsJC7HY7/fr1Y8iQIbRt21a60IaMncqahd+g8K9uc+MqvkXYC188NHPNmf8GCt8Ar+11WS6qkJo4C2+grZWEoXlfitI+J+SZDylO+4LwoTPxVBRSfmg1oQMm3btHMFTc5Oyct/6tfe/xeHjnnXc4cOAA27ZtIzIyksOHD9OnTx/27NnzQKPAli1bePnll4mJiaGkpIQ5c+bQo0cP7HY7ixcv5rPPPkOtVnPt2jWSk5PJrgT9E/2QRTf2XvTyX7mwhWsn48jPQqbUINf4YEh9DtFhpeyXZZIym8dSRuzYddJ7ZIIbn/TPuHrhNIGBgWi1WiwWC2azmTp16hAdHY3RaESv10suEXl5edy4cYPbt29js9lQKpWEhobSoEED4uLiCAkJISAgAH9/f3x9fdHpdCgUCqxWK5WVldINNzMzk+zsbCorKwkMDESv16NWqxEEQQqwNpsNHx8f/Pz8qi3FCc9S6VfzN49F+eG1eCxlvxl0EQXKFo8gJaEeJ0+e9K6q0xZR8BDc9cFzwbR/heQU4WWTzCbsuU+4M2co0SOXUrZ7EeYLu1AFRXkdTZw2Qp+bgsI3kMI1E9EndsW3fhvp83IXvU1ov78xoEMyMwY0QRTFx5p8/l9zxJ8Mv8pXyh4pNlJl9RPSZxwAUW8uwJ59FsuVgwR3HUnBig/QxDbBkX0W/T3cQgBVUBS+DTtQuus7Il/5B+qayYTXqIOjogSTyYTH42HPnj1otVo8Hg916tRh7Nix9O7dm5SUFORyOZmZmaxbt47Ro0eTl5dHv379GDBgAPmVDpTG2Af8zCpPbZV+8/1tslXi7VWUqqDOr2O7dhJHXibaGk1Q+hmx3zqPb6MnUfoFo/QL9speOu3I1VXDThkmnyh+OXKS9i3/tdquzWZj8ODBVFZWsm/fPgwGA7du3aJ///4sXrz4gYAriiJTpkyhuLhYat6Qy+XMmjWLL7/8kqSkJMny/aWXXmLp0qUIgkBGRgY79x9m7slKbAG1pHqt25RP1OvfItfqKdu3HNFpw3xhN+FDpqMK9pZ/cr59rdpv8Hg8FPvFERbm1Y6omgxzu93k5uZiNpvR6/WS2pdCoUAmkxEWFkZwcDA2m43i4mJKS0vZtWsXu3btQqlU4ufnh16vR6fTSYtGo6mmGpaQkEBiYiIej4fCwkIpK66oqCA6Opr69esTExMjsQhcLpe0mGUilTweSnfO906g3ZV1rOrgdBXfwnHnEk59BIezK7BXVCBTqPDX+T/Si/BB/Dp6sN++iDXjIJGvzfW6Dz89QpJldZtLceZfpfzgKiqOeG96zoLrIJNTuP4Tlv+sZe90LV999RWdOnV6zO9+OP4XdP9L+D35Svf1Y+RvnY0ciHxrmVeVymlHofWVgptfk6cIbPfCA58tuOxYMw8h1/hiu3YCXc2mxHZ4DmXWHs6dO0e9evUwGo1cvXqV69evk5GRwXfffcfChQtxu910796d7t27M2LECMaPH09WVhbr1q1j7Nix5NXojP8TzzzwnYGdXpNkCBW+ASiDorDfPIO+cSc8FcV31aK8zQPFm2Ygup2oQmthuXLQe5FVFFWrDSv0QbgrCqtlzqIo0uvdaVhPpklDaJlMhlwur7bcu67qcZVIu1KpxGg00rSp97tyc3Px9/dn9OjRjBkzRmrWcLlc3kmyu+4LR48epW7duhQVFeHr60t4eDg5OTn07dsXURS5cOECKSkpUomgoKAAW+JA9EH31GnvKx/Yb3kbCKoC7sNeI1dp8OjDuXPnjvTbqrbNbDZjNpulfVO1CHfFZGQymZddoVSiUCi8ljqiiMvlwmQySdq7VfZHDodDyoyVSiUqlUpafH19adCgAU2aNEEQBIqKisjPz+fcuXOYzWZiYmKIi4ujXr16xMfHI7gMlFUKuMWHlxjcFUVe4RuZt53dmnUURA/GXn+laON0wp6fijIgHFVIDQS7GXVwNBFKGxUOD05bBerI+gAUb56JNrbxQ/0UUSikzjav1oUvMq0eV1E2PvXbYM046FX5A5T6IGJG/VN6qzXjEBXHNyI4bVKmO/O5h2ud/FH8L+j+F/Gb8pXdXuLZ78dTIzYa241TlO1a6HVX8LiwZ5/DVZpD4dpJiIJbMtWrgvn0NrQ1mqKNbUzFiZ/QxTWjZZd+zFw0BafTye7du1m/fj0nTpwgMTGR2NhYrl69SkZGxv9h773DoyjUt//PbM9mk2x6p4SQ0HvvRakiIApIEVE5SPEIHBuK2AuIggVBUMGGiiCCNDFAQAgldAiQAAkhpJdNNpvNtpn5/TFkIbTj+Z7zPa/v+8t9XXttmd2Z2dndZ595nue+b2RZZuPGjezZs4fJkyfTtm1bhg0bxtChQ/n444+RKrdT4bgz/cxjySfmqW/+FE22ZNMiSje/T2Dfx3AVZt7imiA5qmqtW6XVowtrgMpkQh8QgqZxd1RBsQh6XwR3NUJFHsLlw6jddgQff6T6nSAgCkmrp8pSSlBlASGVF9F4qr1KVf7+/sTFxXkDtCzLFBQUkJubS0BAAKIoYjAYyMjIICgoiHbt2uHn5+eVTnS73d7yS428YXZ2NqWlpUR2r+06ezP0UQmYWg+gZOuHhAx5WnnwNrVgtY+SydYEQJ1O572uudwYIGvu1wTbGunLmosoing8Hm/2mpmZSUBAAKGhod5525oAfOPrbr6IoojZbMZkMlFRUUFKSgq7du1CFEX0/iGETfnsttMLsuhG0OjwadwFyVFF+EPzqTyxHV1YQ/RRiQgqNbqwht7na8wROAou4ZD98LhKUVdb0fjfeXSt8uhmbKeTQJYRNDqFbg2Ubl2CpyyX0u2feHUZDA3bob1GoqiBuySHsp2fEzb6VUo2vYdeo6JJpN9dP8t/BXVB9y+Au8lXyqjwadgOnyc+pfS3TzHUa4Fv014UfPscIff94xaHWkU67yciJixEYw6nfO/XOHPPYW2iODjodDoGDRrEoEGDWLZsGXv37mXdunUcOHCAhIQEEhISyMrK4ty5c5hMJlJTU7ly5QqLFi3CYrHQZ9pMMhx+VGbUNv0zNu6MNqQeucun3PIe3F5dVCXTzV89y0uTDR31MgVfz0EXmXBb14SbYQqLxW/8G7iuZZDOm8TtxfYPEGjUYbG70AiCd7kxUlnuArolhiKc+x3fvVtJSkrydsVTU1OZMmUKTZo0Yd26dYwYMYKysjLuueceZs6ciUajIScnh5ycHPbv309eXh6xsbGcOHECURQJCwvDYrFQXl6O0WjEba/k5pBT8N3zcK02H9j7UQyxzbHs/pLqzKP4xN2+bCI5qzCZTMTFxREdHe2tyZpMCnvKarVSXl7uNaq8+drj8RAQEIDZbK513bZtW/r06YPRaCQnJ4fTp09z4sQJOnTowIgRI7jvvvsIDw/H39//T+s0ACSfymTRtjOcsSjTKjdn75LbydVPJoFGg8ZP6Q3YTvxG2EPzlSfc8HxZllD7BuI+swv/ln1RFaVTXph3S0/hRtSI5UtuB/lfPEXko0so27EMn4SuWHZ/idrHTPjY1yn47gWvSWYNnLnnKdn0HsFDnvaeZcnAg+1ibrOl/xnqgu5fHKpr3z9ZEnFkHcfc/eE7PlcWPZRuXYJf+/u8p6wBXcdQsnkxO2xFTPj9Q3r06EHHjh1p2bIlOp2Ofv360a9fPz7++GNSUlJYt24dqamp1KtXj/j4ePLz87l48SLR0dFYLBZS1y5F33UCssfldWS2HtmIuzgb7c1NtGtfaI1fcK1M19xrIhUpa0GlQeMfgi4yAWNCV1y552u5JlSkbsSn+HItPjyhjbDKINxmFKmmPFNUWeN2K992+Y60AmRPIs/NHwbAyZMneeONN0hKSqJXr15kZ2fTtWtXRFH06kKkp6cTGxtLbGwsAQEBJCUl0aRJE1q1asWZM2e4cOECV65c8WbGbdu2xRWoo8DtrEX8iBi/wFvTrYF/p5HYzuzCUK/lLaNTktuJqygLu8XC0aNHyc3NJSQkBI/HQ2FhIXa7ncTERBITE2nevDmJiYk0adKExo0bYzQq2ZzT6aSioqJWML45MAcGBtKqVSsiIyO5dOkSr7/+Oi+88AIajQaPx4PRaLxt4L75+pwnlG35BtySmjuJz6kNJoIH/x17+j5lqmXD27jLrlK6fSm+zfuALJP35VNK01ilxti0lyLN2HkUVfgo45J+/1yERvgnpIxrTwLAU1mC9eB6qrOOEzryxVqz513jgv4jhgk1qAu6f2HIsoxKltCpZAp2fokuKsFrVy6LHmT5+mm+LImU/Po+qLUEdBvjfdzUZiD2c3sp2b2addVWtm/fDoDNZqNly5Z06dKFjh070rFjR7p3707Pnj1ZvHgxhw8fZv369Zw/f57g4GCio6PJzMxEKzrwcVdQefUszqtnvdvxiWtfK2uoOruXqvN/KHbaNgv5q55GliUkZxUlvy5SjBwDIsj97G+ItjKC7vkb5Xu+wlC/Nc6Ci4prgq9ZEYpBET5X+ZqvqXbd+XghiXd1KQAUKUqNngW/ZTD3hReoumY/ExISwo4dO+jatSsDBw4kMzOTfv36MXHiRK8Qz9GjRzl+/DiCIGC1Wtm0aRPBwcEEBARQVlam1L3z81m7di3S8TPETF/1Tz9nY0JXjPGdkZw2hJtE7AVBQLy436uBUTPqVSPqHhYWRnh4OFqt1isYlJGRQWZmJuHh4d4gfON1hw4d7qjXeyNq3seaNWu4dOkS/fr1o3///jRs2JDKyspaQbusrIzkXJF0n0iku8Q6x5UzVJ3ZpXifuR248jNw5p4jYvwCBJ1B0T5QaYh67GMse79Ba47EJ649lYc3oA6KQl2Sjco34J820qyHN1CVlozksFHw7XN4KktxXD2Lx5KPqC2l4NvncFvyKP75bYyJ3bCnp+AT157IR5dcK23ZKN//Ax5LHk/ec2ftiv8J6oLuXxSlpaWMHz8eg05D9sqZqP1DMfeZ7F1uatkfld4X2eP+/dxmAAAgAElEQVTGXZZL6faPEQSBsNGv12I3CSo10WNeISB5IRnnz/Hee+9x+fJlduzYwcmTJ7FYLCQnJ1NaWorNZqN9+/beIDxz5kwWLFjAiRMnWL9+PXv27EGv1xMulqAa8xporv/7yx4Xhd/PQx/dhKpze3EXZRE760cc2aewp+/HXZyNaCtDclQiaK+NR1lyUfkGEjx0FpqAMEJHzqXs9xW4irMIH78Q+9lkQMmky5O/ImTEXIzxHbm69FHCRr+GZdcXBA+a6TW/9JTnk796NrGzfqBs28foo5tgaj0AZ8FF3MXZmFrW7joLWj3mfo/RvmEIJ3f/yrBhw+jbty9ZWVm89NJLuFwuMjMz2bZtG35+fthsNq/IzOOPP86gQYNo2bIl9913HwUFBYSHh7Ns2TLsdjuCIOCDG/ulIxgbd0FQqZAlsVZ5wdzzWhNUEACZ6sxjteqLsiQhXT2NvayIIKOilSGKInFxceTl5XH58mWKi4vZtWsXoaGhiKKI1WqlQ4cO3HfffTRs2BCTyURhYSEnTpzghx9+ID09vVZ2fGNAbty4cS0LmsjISMY//iT6Nvdx5GIeGVk5vJF0CVfRXka0CufRhx+kbdu2CILAyZxyNq08iHQHTenrB10pGYj2Cir++AZZkpA9Too3vKMogfV5lJvPUFS+ZlBr0ASEYfD1x3GX0kIN/DuNvG3Dt+C7FzD3GIehfqtajwd0H1srM1YZTPgERfDM8h/p2bLhzav5t1A3p/sXxa+//srJkyeZN28eo978jqTNP+MquIjHWoxUbVOM9TwuJKed4GFzcOakEdh/Sq1TWbiuR7p4VHNWr17NtGnTvMtqRqd27txJUlIS2dnZNG3alODgYOx2O+fOnUOSJG8Q7tChA35+fuzevZs1qTk4mw6tpb0gi25vBlJ73AskVzUF3z5H0L1PYohtju30TqVEcc2ksAZF69/EJ64dptYDr7GEGqHSG7GdTsJVdJmArg9hPbSesLFv4sg8ivXYViImLkSt98VdepX8VU8TNfUzKlJ+RB/VBFPL/pRu/4SqtGRCR7+GuzCTymObUWkN122PJDeytcirN6BSqTh79ixutxudTkfHjh3p2bMnGo2GV199lZ9++omRI0fyww8/MGXKFC9t2Gq1olKpvFkvgCEqgbBx7yBo9FSe/A1Tc0X601WYiaDVow2KxmMro2zHMvRRifi1HeJt8uhU4PntPeqZFBGZjIwMGjRoQJs2bdi3bx/x8fG0adOGwsJCdu3ahcfjUZpYej3169f3qq0FBQXRrltvfJr1BXMUksaA4K7Gx2nBVHya7PQ0zp8/T2ZmppcUEd60E3mBLbnsNCIIAq4byDA6tYBHFJGunkZ7YRfjB/UgI7wPB3Kq7ui15i7NwZl/AU1AOMW/vIPaNwhjfCccV9MUim5IPXwadcC3SU+K1r1O5KOLvZnujZMJ8Zoy8otKqTI3gv+hfsg/w7/iMn7nddSRI/6vxsmccsauPFjLmUIW3YpUoiwjaHV3rF/d7CBxNxQVFbFr1y5vEHY4HF7tVFmWycjI4MiRI/j7+9OxY0c8DbtySh2PJKvu+gMQq8op2fw+/p1G4tOwHbIk4qkoovD7Fwm690nvzK/18C84rqYR9sBL2DMOUrJ1iVLjVKmRnVWofM14KopAEtEGRoFag2izEPrQfHQh9Sle/ybO3HPU+8c6SncsQx/VBN9mvai+cAhr6kYErZ6wUS97mUg1Sm3mDvfR7MIazp88QllZmZcw0L59e1avXo1er6eoqIh69eoxePBgWrZsyYoVKygqKvK+x7CwMMrLy5EkCbdbEbCpMc8cN38ZW/J0tSir/wwq2cNrw1vzYJtwFixYwCeffMKkSZM4cOAABw8eJCYmhtGjR5OVlUVSUhKDBg2iZ8+eVFRUsGHDBs6cOYPZbKbKEEJwj4cRolsAMrLq+mm5WhYRVCq6NTTzj0EtaB5pIisri8+T01mfKd+VWQdKyVargnhHBmmqhrcwvG6E48oZqs4m49u8L1WndxI04EnyPp+BVG1F0OoJGjiD8r3f4N9lFM6cNIIHzbwl6KpkkerDPzHuno5stsfjvBMr8i7Qa1S0q2fm2JXy/7jL+I2oI0f8X47WsWZeGtKkFtdcUGsR/gkxRtEjbfKnvzxhYWGMHTuWsWPHApCZmekNwDUWPWPGjKF58+ZotVrOnz9P7qkUrvo3R9+wncKiu6HkILkVm+ziH17EWZaPuzRXUUQDNEEx6MIbUbrtYzT+oQg6A5XHNhMxaTEAxoQumLL7KpmuMYDqi4cxJnTB0LAdhd89T/DQWUrgvYai9W+i9guudWLqvJqG9fDPaINiCHvoFayHfkb2OG8JDrIsE9xxKBtefYkGDRpQr149TCYTM2fORK/X43A4aNWqFYIg8Mcff3D58mWvnVHr1q1xuVxkZWXhcrm8SlQ+Pj5MmDCBt99+G39/f9ocvMwbm8/icIt3lcGUJQmNION7YQfH1iYzocsHvPrqq0yYMIGnnnoKq9XK2rVrWb16NYsXLyYoKIjnn38es9nMN998w+XLlxk3bhyLFy/m59PFbMxWI3L7P0VRUIMMey5a2PPRLhqUHaNhXENSqiPwINyxEabsp4gsSTjVGs6q425bZ5dlGUSPsu2bnlCdeQxdVKLi1pt9EkO9lpj7PkZl6i/4tR1SswJuLDVIksSnzzzC1g1rqTi3F9+ejyDy56RJobZ34P+2y/jdUJfp/l+EP2uZ/Z84PboZkiRx+vRpkpKS2LlzJ/v27aNx48b079+fPn36oPE18/cla3AbQ7G5JMRqG56SbGynkwjq+yg+Le5BEAQqT/6Gp/Qqgf0eB8BtyUfjF6LoM9zU6c9ZMlYRbPfxR6woAgHU/mHIzirEqnIQPZh7TSCg2xgklwNXwQUK18zFv/tY7GnJGOq3QtAacJdcQXY7CBv7Jiqtgeqs4xjqt6Ji/w9eTeI+CaGsntyJb7/9lpUrV5KRkcH27dv58ssvWbFiBQ6Hg759+5KSkoLT6cTHx4dZs2bxwQcf4Ha7kSQJQRDQaDTUq1eP7777js6da7P2Rk2Zw3FXGFK44t/mkW+w8VErt63pB7Ae+Inkn79m6tSpDBs2jNdfVxwOZFlmw4YNzJo1iz59+jBv3jzeeustvv/+e/R6PVOnTqWqqoqAgAC+T71KtSkasdqKX/v7bvk8HTlpyh/atRKQ7HFj2bGUwAHTav1x3ozshSOoN2ctVWf3/mk/t9AHXkJl8MN6eAPa0HrYz+5F0OoxJnbHdioJfXQTgofOInf5E6hNgUROWoygUmPZ9QWawEglCEsSPmUXKPr5LaZPn87s2bPZmmH9P/Z7+GeoKy/8P4RTV8vvyGL7T54e/TO4XC4OHTrkpZYeP34cURTp2LEj6enplJWVER0dzYABA1i9bjNodAhqLaLdiiy60PiFIIseVHpfIiYsuO02RLsVyePEsmMZnooifBK6EdhznHd5zpKH8etwP6aW/ak8vpWqs3sQrcVoAiNR6X1r72/BRWJnr0WlN3J16SSip35OxYG12E4nofbxR3LZaTf9Q8pzLkBFHmVHt6KXXbRu3ZqtW7fWIhnExMQQGBjIyZMnASUY6vV6RFHkxRdfZN68eWi1tbPpgoICmjZtiiiK6PyDee7T9Sz9bgNOWYPZqKNX63jemXI/Xy77iPnz5xMdHc0ff/xBv379ePTRR3n++euOyzabjddff51Vq1bxyiuv8PjjjzNv3jw++eQT3G43o/42h9Oh/SlI/ha1X7B3tK8GkstB3oq/EfbQq2hD6wNKw7UsaQW+Le9BHx6HLLqVufCYZpha3et97ZX3HyR29o/Ibieivfyufm7IErLkQVBpyP1sCrrQBujrtcQQ0wxdVAIqrYGSX99HrLIAAsbEbgR0fej2q3I7EXcs4lTy5lqC6X+V38PNqCsv/D+Eu7LY/kunR6CQLHr27EnPnj159dVXKSwspH79+kiS5B3Iz8nJoWnTpsREHEI98m3cErdkuneC5LRjT99PxYG1mFoNUGifNw2yy8iodEaFkabWImgNaALC0cc0J2TorFrPzV5wv2K1DSCovafb/h1HeEXfC0UgqjVSaBOMjftjv3SEpAM/AYqBpc1mQ6/Xc+XKFbKzswG8UpiBgYG8/fbbNG/enKysLO/sag3xYtmyZbRr1w6A9PR0nru/HZ/MHEFZQQEdBgxAnXGFYNNDPP3003z00UdcvnyZpUuXemeHTSYTM2bMAMBkMrFw4UImTZrEjBkzWLVqFZ9++inJyck0a9aMdVt/Q3T9glhegNoUhO34NmRJRB/RmOAhf6fy6K+Y2g5G0BupOreXyqObFc1jyeNlEcoeN5qQWFDdFCJUagSVGkFvRKy24szPqCUQcztYD/2M2mhGdNgw1GtZS7cj7KFXro36eRDUWmxndlOevApBoyOw72MYE7uBLDF3UCJv/ZjDlStXagXdv8rv4V9BXdD9vxR3Y7H9n0DN5EP//v2xWCxUVlaSm5tLamoqFYVX0WYcwtDo9pY7siSCIGBPT1G63LnncRVcwqdRB8LHvok2KJqKAz/degopSUjuaoq+f5HgIU9TeWIbiB6q0nbjLrlSe15XlpCqylHdhj7qKsxEFx5X+7keD8bGXTDGtae1nMlvn7yETqfD4XAAeDNft9tN27ZtadSoEd9//z3l5eXKxSHijmmPLqwBOt8AHJV2BE84+lxlxnfq1KmUl5fjdrvJycnh1KlTbNmyBbPZzHPPPce8efNYuHAho0ePJikpid69e2MymZg0aZJ3N5s3b65MkqxZw6BBgygvL2fRR8s53KAEp0ci74sZRIxfiMpwPet3XDlD5fGtBA+cQckv72JqPYDIR97Hkrwa2eMm6J4piNVW1D7+lO1YdtvPS3I5qDy6icpjW/BrP+yu3wtnwUVsabuJmrqC4g1vU7zhbXSRCbXnhGUJtV8o5p7jsez+gogJ7yFotBR8NQd9vZaodD70jvOn8IknWLFiBZ9++ukt2/mr/R7uhrryQh3+I/jyyy9JTk4mIiKCnTt3olKpOHPmDBEREfj7+5OWfgFNYDS3+7bJkkjwkKdxl+QgVhaji0zAENPMy9uXZRnrwXXIkoi5+1iqM49Ssf8HnHnpqHz8CblvNpZdX+CpLFXG1q6d7qquqVYBiNYiZdbTLxSPtZjgYf/AlZeB2teM7eR2zD0nYGzaEyQJ59WzFP38JrGzfkAQVEhuB5adX2A7sQ2NRoNKpcLj8RAVFcWuXbto3Lixdzsnc8pZmnyRPRnFQG2asuR2olarCXTkM6yRjiUvz6a6uprQ0FAKCwvp378/NpuN8vJyLl26hNOpMOuCgoLw9fUlPz+fxMREEhISvJm02WxGo9Hw4YcfYrPZUEc1w1VZBio1rqLL6MIa3HCgZXyb9QaVGseV0whaPSFDZ1F5dAvu0isED/47nsoSCr+fR+j9z2I7tYOqs3sQNDokt4Oge5+k7PfPUPv4YWzWG/+OI1D73F2TwHZmF1WndxH20Cug1mA7+Ru+TXt5x+JuhGXvN0iOSoIHTAeg8Mf5+He4H0O9lvhd3su2xf+gdevWnDh/ia3nyjhfYMXq8NTy1furZLV1Nd06/K9j9uzZREVFceXKFY4dO0ZAQAA7d+5kwYIFzJo1i+HDhxPdeyy7y83/0uiU7HYgVhRgSz8AgLn7w4jVVqovHKJs9yqCB07HmZOGu/QqAT0epjz5K/y7jKJ0yxJ8m/fFmNgNGZmi715AE9qQqEcXk7NkDILWB9njRGUMQKU34Sm7SuDA6VQe+AnJ40KqKkcTFIW75Mo1SrWAZC1EdjuRJIkJEybw1Vdf1XLa+NONTsCgVWP742ukjGuEk/BwZsyYQdu2bbHZbJw6dYpZs2bhdDq91O309HS2b99O48aN0Wg0VFVVYbfbsVqtXklFc9/H8OtwvyIDmraHkPtmXz+W1+aSRVsZxevfJHzcO0jOKnI/nazYo5uCcJdexZjYDWfBBQz1WqKPboapRV/vOq4sHkPMjK9qzWDfDZ6KIvI+n46g1qA2BXsnR8QqC2JVBQgCGv8QVDojbks+praDCOr7GKDoQqsMJtTGAKrSdvNY9zi2XZGoCmiARq2+RXejxldveu94Wsf+9+q3t0NdTbcO/+s4ffo0AwcO5Pz58/j4+BAeHo7b7fY2mx577DHee+89Xlr07Z8KTMgSakGmm18JVzIPcdxhQ7imS6D28cfU6l584jvhyD6JI+cM4ePewV2cjTM/nZKNC5Blmcojm6g6sxP1NXtzlcGXvM+ng6BGFt2g0iglCNGJymCi8vAvRE1Zhu3kDqqzjhPY7zGKN7xN5KTFijnohQOUbVzAk08+yaRJk9i/fz9lZWWUlpbyRz7stYX8qREmGah2iwjtRmEtL8d2YhvZ2dmkpqZ6hWVqJBhlWWbPnj3s27fPq3N77tw5QkNDCQwMJDw8nLi4OIxGI6mpqQRFRONRqam+mIrj8nHyvnzq2lYFwkbNQ9AZKPzhZQS1hsI1c/Fp1IGYv39H2e/L8e84gpJNiwge/BSSx0XFDfoQN+LPBlwATUAYERMXYdn1Bc7cc4qGrV8wlqQVRD6+FNFWRuH3LxIxYSElmxahC471vvZGgf/wJu35vliHyl8PsoB4k/aGV1fjbCF7M0r+q5MK/yrqgm4d/iM4ffo0LVq04Ouvv8bHxwez2YwgCJw4cQKAIUOGMHXqVDoFufjxb13u2nGWZJlmZhVBhUc4sn49Z8+eJbz7g+i7PsyNPzW1MQDfpr0Umq1Ghyq6CbrwRoTe/xxq/xCcBRcp372KiPHvcuXDh8Hj8nbiHVdOI3uc6KOaUJ15lJgZq5ElkbKkFdhO/Iag9yF32eMIBhNXFo9RRtnUimvC8uXLWb58ubIPajU+MU0IevB1BO2fnxkFJXgF3zMFuSybv48fzs6dO1m5ciVGo5FPP/0Ut9vNd999h9vtJiQkhLNnz2IwGFi7di1/+9vfuOeeeygrK+PEiRMcOXIEj8eDobwUfT0IuncqQfdOBcB+MZXK1A1oAsKQJRHfJt3RRSagC22A2j8EQaVGsltR3VAqUBtMtfZVlkQkZ22pzZshi24EBLhJ+0IX1oDwsW9gv3CIko0LMTRsi2/zvqgNJtQGE/rIRBw5aaDWKH+G13Cj3KNd44/qT3AhZFn5Q3tr6zmAv2Tg/d/h0dXh/1coKirC5XIRHR1NdXU1vr6+GAwGZFnm3LlziKKIVqtl4sSJLFv1LSmXSjFo1XRsEESjUF+aR/nTMz6EkW2imX1vAgde6M8vzwzl1acmI4oiU6ZM4f1pI4gpOoTkdihMvBtQU/sVrnXWAcXY89f3cRVcVKQkq2248i9QkfIjFSk/4sg+ibs0F0fOGe/gvuSwYTu9E5XBl6B+T4BaQ/DA6WiDopBFD/6dhqMymPD19aVRo0YYDAbMZjO+HR+4KxtLctiwpm68/UK1huAeD3PPPfdw/vx5mjdvTnx8PH5+fmi1WkaNGoW/vz9Xr14lKioKHx8fJk9WjsvSpUtZt24dHo+HwYMHExkZSa82iWhVIFZbKd70Hq7CTCqPbsK/0wPeY2TuNRFDA0VYyHpoPZ7KUtzlBWjM13UfJFe197b9wiHyv3yK6guHb9n9qnN/ILmvNRdVKtxH16OSPd5JE8veb7Cd3gko8p+G+i0V190bG2mCAAhozZF4yguub/fcH0jVVioOrseeffqWbcvXPNBqPyYhuRxUuyXe2nqeo5lFXhH7vwrqMt06/Ns4c+YMLVu2RBAEqqurCQwMxOPxoNPpMJlMZGZmYjeEcrXhEFKyKjAkZdxSj7uIUo/r0jCYYJOeU6dOMXToUObMmcMTTzzB/PnzOfPLV+gjGxPWZyI2f2U87UYPMsntpKZmYWzcGY8lH/uFg0SMf5fsRaNQGwMI7DMJ2ePGemQjav8QfBq0o2Lfd1Sd3Uvlsc0YGrSm+mIqhoZtQZIo2fSeoiehUiE5qlAZfHFVlXHp0iUA3GoD0Q3a3pUuKzmqsKZu9I6m1YKgQohuwdade1Gr1fTo0YP8/HxycnIA0Gg0uFwuNBoNVquV/v3707ZtW/z8/EhPT2fDhg10794dWZax2Wyc/W0N7n7PK4ItDdtRtO51JIcNzUBl3MyRcwZL0krEKguGBm3wbdoLy86V+LUdrEwUCIqCnVIOOE/V2T3oIhoTPPgp9NFNsez6AtFmQW0KxG3Jp+TX94mZ+RWyWkfVxcO4jv1KryaRWGO6cr5SQOMbiO3U7xib9EB2VeMqziag2xgqj27Gr80gxCoLrrx0ggfNQO1rpmTTQvw63I/scuAqvITtVJLS+Ms+iVhZirFZb+/kg2gro2jtfASVBrHKgtoUBLKM2j+UsFHzcHhEVuzPxtfX90+pqv23UBd06/Bvo6a0AHgz3Zrgq9PpWL4zja15BhweEUGjvcWW++Z63IONBD57diIfffQRer2eZs2aERISonTpX/kHvXv3ZunnX7Fs+zE0ofWpH98Uk05FZV46+ZUlFK59BUGjxVNegKBVMm5tYBSyR5kGqDi0DrGyDI1/KNWZR1AZA7Cm/oKhQRucBRcVdly1DUFnQBscg7swS7FDt1egMfiilx1UVFQAYGp5D7IsU3UqierLx5X3k3kMQ72WhIycS8mvi3BkHUdy2Mj5eAK6sDjCxygMM9up36nY/wOSx8knoQ3xWK2cOXOGkJAQ7yyqyWSiuLiYqirl1H7PoWPkm5ujCTahDu1Nowlt2XLuCNMHtcNs3sOL//g7m8vNpFypwtSyP8bEblTs/56Cr+YQPXUluvBGmHs/gqFBG4UQsWM5stuJf8cRAOjC4sj/8ilkWca/w/1oQ2Jriaub2g6i8PsXvXZA5l4TUBsDkN0OPKe2sGvXLtq2bcvx48cZcP8opr3zOSs/ukLeZ1MU2dHuD+PXegCSs4q8L59CUGsJHvK00sjzDcS/62jyV89GdjsRVCp0EY3wie+E7HFTvudrrIc3YEzshi6qCbrwOKIeX4o94yBlvy0lfNy7yKIbtY8flSe24y7JIVk9FdWfMJL8b6JueqEO/zaeeOIJ2rdvz7Rp0+jUqRP9+/enuLiYY8eOURrYDE2n0f8SR152OxnRQCbzt9WcPXsWvV5PVFQUjzzyCBs2bCA5OZmgoCDCw8NJTk5Gp9Nx6tQp3n//fdb+vJHQRz9GZQrCU1VO3sppqH1MiHYryBKC1oB0jQGFgFe/VaqygFoLkggqjVdTFbVGyZ4lEWNiN6TyfLRVRfj5+dG0aVMqW46i0FAP26kkSn9bSuiIFzDUb0XuZ1MIf+g1dBGN8JQXUrBmLjHTv/S+R1dxNiWbFhI+7l2QPOR/Pp0endpRWVnJjBkz+P333zEajTz33HMEBwczbNJMHI16U6aPQK1WIQnX8yWNIOHxiPRqHMw/BrUk63IWT2/KqkXnFe0VqI232geJ9gpUeqNXHU6rFlDBvyQmI0huHClr6BOj9o4NZmdn8/777zN58uTbCjbdCZ6KIizJq/Bt3lfRZcg67i1FyKIb/w7Dqc46RvWlIwT2nYzGP5T8r5/B3ONhtGENKfz2OSInf0j1paO4LXlE9n+UK0vGYK+0/un385/A3aYX6mq6dfi3UVNeACXT9fPzo7q6mrAmHSnJy6Zk12pAUfW68v6D5Hw0nqufPIL10M+AYi545YOHFINEewVX3h/F6jVrcRjDKCsro169epw7d45PP/2UIUOGMGLECOrVq0dSUhK7d++mZ8+e9OnTh6ysLDq2bYWn6JIiHONrJnTki4SOmo/GHIHaLwSVjwlDfCc0gVEIOl9CRr5I6AMv4dOoE7qQepj7TMK/80gM9VogaLRog2Iw95qIoNUjlufTvGkCy5YtIzExER8fH2wOj/c46CMbY2zcGZXOB21QzF0bT47sU3jKC8j7fBp5Xz6FLLp59NFHsVqtPPbYYyQmJhIbG0tiYiLbL9ooa/sIZT4xysysUPsE1SOrQK1l78VyHlq+nxnz3mVYjAcf7fWf9+0Cbs3jNQHXoFHxcIKWdkIWQo2K3V0goPxBRuTt55FuDfn++++5cOECDoeD6OhoZs2axQMPPEDW0WSeH9C41v7cCZqAMEKHP4/ksFG27SOceek4c897CTMF3zyDJiCcsFHzUBvNFKyZi0pvRLRXYE9XzFhLNi8GFJsgh0dClP469VyoKy/U4d+EJEmkpaXVKi/4+/tTXV1NVeJAHJt+Qu0bSOC159f4V3nKC8n/eg6GBorDquyqRrQWexspgqDijByDIAg0bdqURYsW0bRpU6ZOncrevXtp1KgRYWFhVFdXYzab6dGjB506daJ9+/Ycv5THq6/OQNDqFZH3kivKxlVqtCGxuPMvIskigt5I6a+LEG0WBL0RQaOjImUtssuOUtyUcBdlUl5yBZBxFlwi3VZEwJzp1KtXjz59+nDCpzW/nMgDFAPFPw8Z3xb9CL5WaxUyUxgzZgyzZs2qJRn5dUom85b/hCq6xV3VyZT3pyJv0wcEdR5Bl86diLiczRfHLUio7/5aWUL2uMn97XPW2jMZPnw4vdo34Ig9mH2ZllsmTPC4QKVCVXCOtrpCMo7/zuufH0WWZaZNm0arVq344YcfsFqtrFu3jsWLF3P27Fk6T3iGDN8WON3SP90fQa1DExyLIbZFrUXOfD9vs1TQGdBHJqA2BWFN/QVjYneCBk6n+vIJZNFzw/ruftj+26gLunX4t3D58mUvMwquZ7o2j0B2SSUa/1BEewVide3TO405HH1UIu6y3Gv3I3GXZOMpL1S66IKAsVEH5g/6kEtnT/LUU0+RkpKCx+NBq9UiSRKTJk2ia9eu2O12Ll++zO7du/nkk08oLi7Gr90QAvpNAVmm7PflSq3PL4TAXhOxJK8GlZrAXhORPC4qT2zDmrKWiPHv4sg6jlhVjrnneESbhSMqlI8AACAASURBVKufTETlY8LccwLlyauRZYlp06YRFxdHr169aBLhj15TgGKpeftmjcrHD8lR6e3yg4Chfiush39BtFmQBYG8jUuIjFxKQEAA69atA6CgwsH3m06S+/O7hI16GX1U4i3rtqenYD2yyXtfrCwh78oZntjxGZTlEB4RQVz/8eSFKRTsG+vpstuJoFYTq6pgYpcwQro9wbPPPsvFixeZOXMm02Jjb6tpkBDmy4E1i/lp7Sqy3W5ee+01bDYb7777LocPH+aVV15h+fLlFBYWUlhYSEhICPXr1+fA1wup0gfj1+VBjI06KjKYN6jKCdeiY/Xuz4g3urmoBVvOGWSXA8mlODijUmE9vMErmGPuOQFBo8WRfQpDdFN0kY3RRSZgP/cHN6z4L4W6oFuHfws3lhbgeqZbbGpEdfYpDPVaItrKcGSfqvU6T0URroKLmHtOoPrSEbSh9XGVXMFTXuhVvvJ43CzeeABTzkEuXbqEy+XCx8cHt9vtdb1ISUmhoqKC3Nxc4uPjGTNmDEOHDiUtLY0lZ7MRQuIIHjSTigM/eYOeYgmjQKXREdBhOLZj2wDwazf0+jJfsyL4ImgwBkUSVL8e0RGhXL16lVOnTimKYm8uQCbsrsdIpTfi33kUecunIMsyEY8sQhfagIDuY8n/5hlFY1gUqaiwU1FRwYwZM9DpdIS0G4CuT0+C+j1Ra4QLrutVSG4nplb3YmrZH1vabmS3UzHylCR6xgVQP2cHR46k4HdmF9mqCMIS2xEYFkVseAjdmzfj4S4Na1FnBw8ezIIFC2jTpg0zZ85k+PDhxLst+ImFFFmKKCwsZO/ly6xfvx6dTodKpeLll1/m5ZdfRhAE2rRpw08//UR4eDhhYWG0aNHCezs8PBwfHx+aNGlCr8lzOOiMRBUcq9RsBZXiXQfoEntxISeNkGZNwO6hOi8D2e3A2KQHyLKSxV4rfRT9/BaCWo2r8JIiSq/3wdikR62SiVr114q6dUG3Dv8WTp8+XSvoOtCSYjFSEdaKqiNL8WszEI/NgiP7JGqjmcqjm7Gd+h3JWUVg70e9QjPa4BjcxVfwWIvQRyYAIGj0eHzDSEtLQ6VSsWzZMnr37k1aWhobNmxgy5YtdOjQgWnTptGsWTNSU1PZunUry5YtQ5Zl2jz8LGVCHKKM0gyT71KjlCUKv33+FrFvtY8fqATc2cf56J03ue+++/j555959tlnSUhI4IfVK3E1HIypVf9atjIR49+ttR5z97GYu4+t9Zhf6wH4tx5A9YWDuHYtpX79ppw+fRpRFHG5PRSmHUQ6thO16TbOt7JI6MiX8FjycOaex3Z6J+7iy2hD6mFPTwFZ4ie3A4O9iDatWvL+26/Rpk0brFYrhYWFFBUVUZhzgJVHflFu1zx2LTu1Wq288847LFiwgGbNmpGQkEB4eDjh4eFkZmbSvHlznE4nmzZtoqysjIEDB9KqVSvOnz/PyJEjmT59ei01sBpkZ2cT0mUkZ4N7oHV7uDkNlUUPHq0vkqDxujrLohvJVa1IQF5rasqiG1mWiBj3Nu7yAko3f0BAj3H4XCtXVZ37Q6n1yjJa9V+rdVUXdOvwb+H06dMMHTrUK/QS+vhyNl7yIOr9ceacwZl7HmRJIRU0641f+/sI6D6W3KWT8Ym/rjqmCYzCefUssujxkh0AzOHR2AMDee2110hJSeHFF1+kVatWDB48mJ49e3Lo0CFee+01tFotcXFxnDx5ktGjR/PBBx+gMgbQfcEuRI+kDNHfWOe7GZJI+IQFtdwoANwVxeR//iSlh35h9Ohf8Pf3Z/To0Sxbtoz9+/ezYsUK7m3Tg4OiB/mfONTeDnqtisKDP9G1bVueffZZunbtSkREBBPe+opfD52n8tTvhI544Y6v14U1QLRXULhmLgFdH8IQ1x61MYCyHcvx7TAMdWkW+bmHGT58OHa7ndDQUG/wrMk+o6Ojadu2ba3HQ0NDUavVXtH05s2bM3fuXE6cOMGyZctwOBzs3buXgIAA7r33XpYuXcq4ceM4d+4cCxcuJD4+nsmTJzN79mxiYmK8+7vmcA6qDg9em2S4NQO1nfody+5VyudVM1t7TTPCcUUhSAiCiqrz+wjs8yiy6KF83/d4LLlUpv5C6ebFSI5KtOGNEIC8jBR0f6EZXagLunX4N3H69GlaPziTt1ceVKxoNDpckiIargkIJ3LyhwBc/eQRPJUlqI0BqLQGTK3upfLYFoLu+Rug/JAkpx3NTdKLuVkZOKqrWb16NR06dGD8+PGkpKTwzjvv0KdPHwYMGMADDzzAwoULsVqtbNmyhS5dunhf3zshlN/PFWLuOf6u7yPyiaW3cUyQUVWVILudGP39sdvtlJWVsWPHDpKSkrBarQwcOJDLx/8A33yENiP/pcAruR08N6QVLywvIyKiPdnZ2QwaNIjExESq9UFIHjfVWcfIXfFkrddpAyMV1S4UF2aA4PvmUJ1xgKIf5iGotah8/HHmnken1SIIAi+88AJhYWGYTAqjztfXF6PR6L1dc/Hx8alFJHjggQcYMGAAb7zxBi1atFDKIxERzJkzh0aNGtG/f3/GjRvHuHGKuHzTpk1ZtWoVOTk5LF68mFatWjFixAieffZZXKZIVp2oAPX1P1XZ48ZVeAl9dBNsabsRNDrqzVnrXW6/cIiKA2vxTeyOf+cH8JQXUvjDS0Q+8j6ukiuUbHgH0V6Bf9fRqDRagu6dhjogFEFQUbT+TVxFWTSOu0G28y+AuqBbhzuiZob7Tmwep9NJvm8jvjpVieMm5TBH9il0NzR+dJEJOLJP4du0J6BMMeSvehpzr0e8z9EGx6C5wV5bcjuJMMiEdOhAamoqkiQxcOBAPvzwQzp37ozNZmP+/Pm89tprvPHGGzz++OOobxqEn9Ennj0ZRTg9d29hq7S3irjIHhctPBeoCgzEYrHw8ssvs2XLFo4fP05AQAB6vZ7S0lIqKyuxpG1ELCkmuP8UBI3WW5+8HWrsY/KTVjP+rXW8FxxMUFCQVxi9W7dunC0qxWMtxr/TSMzdH75+XHPSqNj3nfe+u7yAkl/eRRMQjsYcgantYHwatLl2vE9Ssf8HSq6mM3/+fAIDA9FqtajV6uusLlHE7XbjcrlwOBw4HA58fHxqBeKa4Gw0GsnLy8NqtbJv3z5WrVqF2+0mMDCQ5cuX3xLEJ0yYwOjRo1m/fj29evUiYvR8XP4NEe1WKlLW4i7NwWPJQxcWR8j9z2BPT8HUvC8eazEea7HiMBEeR9A9f0MX2fjGI3jt+xKLNiSW4M6zUPsGUvDd8xgTuiEISrPNkZNG+MCpTJoyjr8S6oJuHe6IU6dO8cgjj3Ds2DFvMPvHP/5BQkICU6dOZXPKKfx7T74l4AI4sk/i2/y6JKA+KhGVzsd7XxMQhj62OVVnk72PaYNjUfuHIFpLACXYt/Gv5r5RT/LTTz95a4SSJLFq1SpeeuklHnjgAc6ePUtw8G3qnsCFQ0lY96zFt/tEPP/CWLrkcqA+vYkqRxYajYagoCDefPNN0tPTWbVqFZ999hlOp5O0tDQsFgsxMTG4ys/j+m0Rrvg+GOM7otGolRnammOgUTQGauxj2r8zDEEQCAoKIiAggKysLEAJuocOFOK4fAL/TiNr7ZeX7noNlam/oDYFI0si7tKreDILqDq90zsBohZdxMbGolKpaNOmDePGjaOoqIiCggJv/bbmYrfbMRqNhIWFERwcTHBwMAEBAd4RwAMHDqDVaunfvz+bN29GrVbzxBNPkJ+fT1VVVa2L3W6vdV8yhWH1rYeAgNoYgE98J7TB0Yg2C+ae45ElEWdOGpLdiuSoRLRZ0EXGEzZqfq0/4hvhvHKa6qzjiLYyPJWlhAydDWoNpds+RnI7CB40g7KD69jTpD6zh7b905/9/zbqgm4d7ogDBw7QsWPHWtmjwWBAp1NODz8/cBVHfoZii35trlXtF0LxutfRhsRSvucryvetQe3jh2grI2bm1wBUpSVTvvcb1P6hVKT8SMjQ2VQe34qnolBpnlnyCB05l0GtY/lswtJa+5SamsqMGTPQaDRs3brVa4FzM5xOJ8888wxbtmxh048/ki6G/jlJSWR8tBp6Blax8oOvCW7fnoEDB7JmzRpUKhWdO3emqKgIs9nMZ599xpNPPsnnn3/OxYsXCQoKwl9VyIioCpJ3LSBXF4MurCE6XzPBfj7knz/Cg+1ieKnf00RFmb3OwUFBQRiNxlqZ7uwl05Eqi9HHNq+1d1JVuVeqEiB48N8B8FSWUrr5A3RhcQhaA6KtlIjB03mgbTR+Vw+xZ88efv31V/744w+GDRtGt27dGDt2LM2aNfNqAsuy7G201VwKCgooKChgxYoVqFQqwsPDSU1N9epBLF26lIYNG9KyZUsiIiJo1KgR4eHhREREEB4ejkXlz8/nbSRnlFJDcpMlEUNsM+z2cmVkTnQrI18N2xI8YBr2Cwcp27EcZ85Z8r+eU/vjET3I1xyl9fVaED11JdWXjiC5q9EEx1C09hUCujyo2PwAhtgWHN+xgktTBtOo0V/DWaIu6Nbhjti0aROnTp2iTRulI/zuu+8iCAKCIFBkrSbdet2UsDx5FebekxDUajRBUUQ+ugTL3m/QmiPxbdGX3OVP/Evb1qlVzOgT771fUlLC3Llz2bx5M++++y4TJ06sJSB+Iy5dusSYMWOoX78+x44dw2w20xHFT+tukpIut5uG+ioWTxlMqxgzYdYM3nrrLQIDAxk2bBhbtmzBYrFw//33s3XrVm/QeeaZZ/joo4+IjIwkLS2NgwcPknPhAp06mUhNXoFDlvGLjkYsKuKPsigSV37KhAkTvA7CwcHBaLVab9AVRZGyEzuJfuQ9bxlAclUjVVdizziAsVkv7367LXnYTu/ElZdO4D1TcOVfQHI78Gk4msItH3PV0oJJE8bzzDPPYLVa6datG5WVlezfv59FixZRVFRE586d6datG127dqVz584kJCSQkJDg3cayZcswGAy0b9+eRYsW0bdvX/bt20fLli3ZvXs3c+fOJS0tjSZNmiBJEidOnKCgoIBMdTSVje5BVmlrkSEcV84oTh9lVxE0emwnf0MX0Ri/dkNwFWVRdW4/2rCGGBO6EtD5gVqfreS0Y79wEFD6AK7iy1RnHsHU6l4cmUcxNu5M+f4fqDhwrS4sy7Tp1vcvE3ChLujW4Q7Izs7m8OHDXL16FYPBwMCBA70EiAsXLtC5S1ekAc9jiGkGMc2oSFmLqWV/RHsFHks+Bd8+h8darJgNntrBjZ1q3+Z98G3ex3u/5NdF+HW4H41/KNbUjTR8dCEvDWlKqxgzoijy2Wef8eqrrzJ+/HjOnz9PQMDtKa0A69atY/r06bz88svMnDmzVj36TiaGSdt+ZdKYYZQf346vWqZVjFJDffPNN8nOzubbb79l5MiRhIeHU1xczLZt2/jiiy+YM2cOGo2G2bNns2jRImbOnMmxY8f44IMPuHTpkrdWajAYyMnJYcCAAbRo0YKNGzfy9ddfI8syQ4cOJSIiAlmWvZnlyJEj6dS9F47IGCyiQmct3/sN9owDGOq3xreJUhf3WIuxJK3E1GYQgb0mAuC8ehZED9rASB566RMmNnSyZs0a2rRpQ1RUFPv27aNnz548//zzfPXVVxQXF3PgwAFSUlJ46623OHr0KHFxcd4gHB8fz9y5c1Gr1bz33nsMHz6chQsX0r17dwCGDx/OsGHD+PLLL5kzZw6NGzdm165d/HrOomjauqVbqtv66CaEjX6V3GWPK+I3jkoCej+K2uBL2e8rEG2laIOjbwm4oMw8m1r0A5QSUMmm99AGRVN96Qj6mGb4dx6Ff5cHqTqzG3d5PhF9JzKp318n4EKd4E0d7oCpU6fyzTffcOHCBaKjo4mJiSEjI4O3336b+Ph4Vu44xtH9yYSNehlZdFPwzbNETFAcG4rWvkLUYx/flOlO8Qq+5K96GkGr92bJzrx0tEFRqAx+yI5KGkSF4qsS+fjjj5k5cyYBAQF88sknXqrx7eBwOHjmmWfYtm0bP/74Ix063FZr5Lbo06cP8+fP58iRI5SUlLBw4cJay/v160dycjIDBgzgzJkzFBYW4vF4OHnyJC6XiwEDBmAymdi9e7c3o8rJyWHJkiUsXryYHj16oNPp+OOPPxAEgSeffJInn3ySpk2bEhUVRV5eHoGBgQiCwFebk9lw3sau9GJEUUR1w/jcvwJBclP92xJGTJ6JIaJRLS+xjsEeRgy+h7fffpuJEyfWep3L5eLkyZOkpKRw4MABNm3ahMPhoE2bNpSXl9OpUye+/PJLjMZbPc5WrlzJ0qVLKRaNVAfUw3p6lyIoBIiVpQTdOxXfZr0p/W0pYnUlHku+sq+AT3xH3CU5OHLPow2MRKwqJ2jgdHzqt7plO7IkUrrtY4L6P+FdPyiEG02AQlSxnUpSgm6/SaQ83++/7p1WZ9dTh38J+/fvZ//+/bzzzjusXLmSMWPGeC1hatCo31hOnjmH9cgmKo9uRnJUkvfFTEJHvniHtV7/c4+c/KFiR1OYSfkf3xDYeyLukhxigoy8NGcmvVonMG/ePMaOHcuiRYsYPXr0XfVQL168yOjRo4mLi+Po0aPejPzPokGDBmRlZWEymbh8+fIty3fu3Enz5s35/fffvfOnK1eupF27dgwaNIgXX3wRPz8/+vbty86dO2ncuDGxsbFMnjyZjRs3MnLkSJYsWUL79u0JDw/ns88+Y9kyxWn3zJkzLFq0iG+++QZLcAumr89ApdaBSo1K8z+UJBTdeCy5mIY8w/arbijI8y4yaAqQgZ5zv+b5BS9iNBoZNWqUd7lOp6Njx4507NiR+Ph4tm/fTu/evfF4PJSXl5OZmUloaCjNmjWjW7dudOvWjS5duhATE4PZbGbIkCEcNbTh0O8bMfcY7yWMlO5Y5jWjNNRvQ+nWJfg27YX90v/H3nmHR1F2ffie2ZrNppBCGgkJvYXeO4KAwItSBBUUQSwgKE18FRSk6IuCQZFmpTdBkR6kCgISegiEUAQSQnrfvjvz/bHJQkgCYvv8vnfv6/JidzMz+8yYnHnmPOf8ficQ1VoKT2xDsptRVQrFmn4N2WF3avWO/tqltVCC+foZjImH8Gk1gLxDq7FlJ2PNuI7SJ5CQYTGu7QSgS+3Af4xZZQnuoOumDA0bNmTTpk2EhYXRqFEjEhMT6d/f+ahX8mTkMBcR0Hsc4Oy2uvX5K4S9tASHIQ9BVHB72TgcRTmgUFF4ahuqYu8rZz7vSySrGU1ITXw7DCXcT8f26QvZt3MLM94ax3MXLqBSqTh69GiFC2UlbNiwgTFjxjBt2jRGjx79u8Sqo6Ki+PXXX6lZs6ZLt/ZuSmyHqlatytWrV7l58yYTJ05k3rx5bN++nWHDhvHkk0+iVCpdgbd27docO3bMuSg2fjxjx45l48aNzJ07l4iICGrUqMGOHTsICgqiadOmVG47AEXVTsjinTpf2W7FmvFruZoL5SEUC5BLMij8I7DLAtwzUy7JYx9NMeL1xFTGfrICnU7HY489Vmo7g8HgKsHr3LkzK1as4MyZM65KhpMnT3LkyBFWrlzJyJEjMRqNCIKAQ5JR+YfjUbMV4Pw9MSYexnzjLF4NuzvPy2rEu9UAVJVCQKFE5R9O3oFlqAKq4lGjJZYb55BMBdhyU0n5dIjzqch1UZxtwL4dhqLwDkTUeOLdeiCasDqYr53i9rLxxXrIhSDZ+eXT6zSZZ+HTTz+lQ4cOv+k6/tW4g66bMnh5eVG7tvMPffLkybz66quumZnD4XCKzhgyESU9DkF0dQwBiDofgp+bhyAqXOkFfcNuLidaTVgdPOt1xnjpZ+z56eTs+RxNz5d58vlX+GXnBjQaDU2aNOGzzz67b8A1m81MmDCB2NhYdu7cSbNmzSrc9kFERUURGxvrcuItD7VaTWJiIuHh4RiNRrZu3UpQUBDp6em89NJLXL16lRdeHcfRPD2PvrOK1h27cPOqjdr1upNdZMFfr+Gpp55i8ODB/PTTT3z00UcANG/enHMp+fi1b48oqig4sQXz9TPY89KQHTZU/uEE9nvLpSVQ7tgUzsXN6oGeXMko4va2T/HrMZp77z/WzBvk7FpA8LNzkWWwOEDf8TlGfPANs1JT6d69O+Hhzpvj22+/jcFg4I033iAmJoYjR47g5eXFjRs3+Pnnnzly5AhHjhzh0qVLNGrUiPr16xMfH8/5NAN+A9+jsFiER1Q5q1F82z+DOri60+HX0xetXxiOgkxs2SnYslPwrN8FTWhtrJnXseXexr/nq6j8q6DwrFSuXXsJvh2Hul7rard1VS14qESm9Kr7j/RIcwddNxWSmZnJ119/zeDBgxk/fjxLliyhWrVqhISEoDq7F0HfBVv6dbJjF2LPT+fmvAF4Rj+K4fw+kOxOPVZBIHvXAhReAYSOWIBss5B/bCOe0V3xbvYvbi19kVs/fMzNolyC/AOpVjWcU6dOce7cOdq0aVPuuC5fvsygQYOoWbOmy+79j1Ay0/X09Cx3pluCj48P8fHx1KpVi6SkJJc7r9kziK8uiSydFYta7YVYvTXHb5lAG0FOEbSds6+UNXinTp1o3bo1Xl5eREdHcy20MkJxl5ZHjZZ4VGtG/tFv0Td4BG3VhsiyzK0lIxGK65xli5GQEQtwmAoQRCVVA3WM7hDFtP3pWB1gTDqK/2NjS41ddtidzsei0nkDlGUchjwMyecx3b7OyJEjGTt2LJ9++ilnzpzh888/p3PnzsyfP59nnnmGN998kyNHjuBwOGjXrh1t27ZlyJAhNG3alMTERCZPnszly5fxCq1D/s9rEdU6cg8sI3ffVyi8AzAkHMB09ST66K6Yfz2N5VYi+sY9EHBWYOCwYb5x1lk2qNIgiIpSbsBKUUAhClgd0v3t7YsbT9xuwG7+z/HTTz/xyiuvEBMTQ48ePXjnnXeoV68ew4cPJzIykvi4I9Tu1ZKTRdkgSehqt8Wel44++hEkQw7aas0w3zyPUu+HLTsZr+Z9nTMWjQ5d3Q4Yzu7GkpwAyPh1H03eweUUGLNdFuQltcD3sn79esaMGcN7773HqFGj/hTvq5Kgq9frK5zpllC1alWOHDlCixYtsFgs9Hr9P8Qra2BVqBFEsUznm9UBIJWxBi+xu1F5+aHxaYZQbJ6o9A50GmwWO+qWPCEgiISOWABAysJhOEz55OxegqMwiwyHnYvrQtA+NglRq3ftW4JkMZK+bgrIMrbcVNJWvoG2akNMV52L5NqIaNpPWMTyL/+N0Whk3bp1WK1Wdu3ahZeXl0tjoUGDBtjtdm7cuMGZM2eYPXs2+fn5rtI3WZZRiSlUeqQH1vRr+LZ/mqKzuwkZ/glZ22KKjSkbovQJIivtCl6NeiBbTCizbqJv1N2lnFZwbFMp48qSWeuDSv5kcDWeNKzycHn9vxN30HVThh07djBx4kRWr17tesSfOXMmzzzzDGvXruX999/n+PHjKE4+R9hzH5Iniij1fsh2K3mHVmPPS8Oafg17YRaCSotCqyd3zxdYG3bDu8XjaENro9T7oW/UndvfvE7hmV1YM6/j0HrRok07bt++jd1eWpzGbDYzfvx4fvzxR2JjYx+Y630YQkNDyc3NRalUPjDoAjRp0oSwsDDyAqKJV9Yot4X4Xu61Bu8UpsBut3MsXUZTVY3VIeMw5JL53WwE0SlVaLl1EUGpwbvlE2WML1W+IQQNeo+CuB+QzAXo2j1DxvcfYM9Lw2EsIPVr50zXUZBFlddWoW/cE0dRLlLC/mLvtHZU6vy8Uw5R583VPAmj4MFXX30FgKenJ/7+/tStWxez2UyhFVJVUVi8/bH5qRDCTUhp14jIu0QlDyVXrlxBp9OhiqyPolozrOnXEJQa1KG1KDi5FUtqIv6PjSnnukg4jHlYs264PpPMhU4h83JmreWV/HlrVdQJ8WJg0yr/uEWz8nAHXTdl6NWrF48++igqVek8Yt26dZkxYwapqak0btyYjIwMVh27zrC171LpuXkAOIx5ZG6a7dR6tZpRePoianSoQ+ug9A4kfdVkrJk3CXneucqs9KlMQK/XMSQcQOGwUK37MFqm3KR+/TudWElJSQwaNIjatWtz6tQpvL29/9TzFUWRiIgIcnNz75teKGHXrl1IHpVQ6X0RVVpkWSJt5Rv49xyLunJkufs4nQxkjA6BmdsuMHXHfxBFkdbd+7E1IQNBcN64Qp6bh8OQS8qi4Xi3GoAmrC6qSiHkHVpzvzMABCoPmArArSUjXbPi5E+HIogK5wxaEBEUKhTelZFlifR172AvyEDU6nEUZOHbZYRzpnn0WxTGdFq2bIlnRD1u6uuSb9MjCgJK6U7Q0NVui8MhYTOk0LvtLfas/4q8lOsE2Syukfm2e4aUxSPwaTvYlZd2SjWanRbqVhPWtCvORddi7PkZCLKDHvWCyp21+us1vNzxn1V7+zC4g66bcrk34N7N3e6/AxoF8ZIIhad3AIJzIUMQCB76IVnbYvBq4lwVLzj+HZ6PjMCzTnvSVv/bmZ8s1rctPLMTW+YNEASWfzaXOl4KV7fZunXrGDt2LDNmzOCVV175y6y0o6KiyM7Ovu9M1263M2nSJDZv3ozgV42ipGM47DYcRTk4CjIxXDiAIUEGWabSIyPI2DgDhzHfGWwkO5qIhlhuxiOZi1DYjEiSxIb3RqLoMBJN8J3uu7xDqxFVHtiykyk4tpHgYR8/+ASKr5fDVIjo4bwpSTYLgkqDJfUSufu/cZ5DQQb5h9egb/QoQU/NJO/QahTeAXg16oHDkAdKDbpqzRDOfEfHF95g0ZHbmG3FrdP35FIlQYmghAKvSH52hOJV4yxtQjyJVyhcaZGicz+iDW9A0dndqPyr4BHVlOwdnyDbrWRsmIZ3y354txqAqL7ztCDKDlY8VZsGkUEPXf73fwF30HXz0NztFiEIAnM+mM2MsZ2xzQAAIABJREFU9YfIOf0julrlL36V8aly2JEcNgSlBlHjiS07BQB79SjAisVi4ZVXXmHv3r3s3r2bJk3+WsGSqKgo0tPT7zvTVSgUtGnThtUbN6Nr8STC7Rg8qjXDknIBUevl7LKTcWkDCAolAX0mIIjOPzNB64mi03PkH/0WpYeegp/X4tlyAPJdAdd0/QzWjF/R1W6LR2QTZKvZlXv9LdgyfkXpHeicRVqMiBpPNKG1CR2xgKwdnyCqdfj3GY9kyCV3/9eYfj2NZCygMO4HRK0Xft1fQVE5Cql+T+btu+50Q34AgihScGwLRRdPk51fEw/xBDjsmK4cB1FB5YHvYi/IIHPzHJAl1KG18Ov6IpbUSxSc2ELuns+RbGZkuxXZbkVw2Oj+qYqEhAR30HXjBpwz3fbt2wNOAZzo6Gi8juWSl3AYZBnJVEjaqsnYclKxpl91phdCapU6RvauBaiDqjsfbYty8GryGKrAqmSc30ZBqIfL1v3kyZN/ejqhPKKiorh16xYGg8G1yHUvgiCwYcMG7A6ZzF2LsOWmkndwOQ5TETicurAKnfedBhFBxGHII2vrXNSBVVEFRGBOTkC2WxEVKhwyCIl7Eas2xYECW3YK2Ts+JeipmRQc/x6ASt1eRBBEsnd+yu1lzrpohyH/zqBkGXtuKnk/r0NbtSHGy7+gDqtD+uo38e06ElHrSdrKSfh1H435xjlkm5n01f/Gt8MQtBHRSBYj9sIsPKKa4t28r/P45iJSFo4gsN9b6Gq0rPCaWVIvAU4FOe9W/VGH1gKrCV3uFTzaDUYSla7rqPILI2T4fARBxLNuR9d+gX3fKHVMD5WC9S+1/kcvhP1R3EHXzUMTHx/PqFGjXO/nzZtH6+Z9SdmjRdR6EjJyEYIguNILtuwUbDkpru0dpgK04Q0QVBpnDlSSyP95HZLNgqj1ZOevEmOHDWLOnDl/WTrhXqKiojh+/DhqtdqlKXsvGRkZ7Nu3j8Hzd7IrMZu01f8m8PE3MV07icOQi0+bJ0sLjssSglKNyj8cr2b/wlysixDy/HxM105iTb+K9cbPKB0SKBTO/HbfN0qVSgnFC2gKD29Cnp8POKsXzMkJ5OxehGQ141G1EUrvAASlGmPSUTwiG6MJrYOl2BVXEEQyNr6HV/O+5P+8Dr8er95pu754CFvmDWwZv1JwfDOCSo1scwqjZ2+LIe8uUXlBEAl+fr4zLSTLiFo92bsWEvT0bBAV5B9ahd+jo4hu05r+revyn91JmO6S/RSE+0trOqsU6vy/DrjgDrpuHhKHw8HFixepV68eAImJiRw+fJgBYeEovQJIWTwCHA5kyYFst2BMPOR0NxAVTodWhRLJVIBn3Y5kbfuYoKdnoaoUijaqCdnbY0CWkBRKmnbu9bcFXChbNlZe0B03bhyiKPL97FfIN9mwZl4nY9NMJHMRssOO6WocjoJMbi8fj9+jrzgflYtbWOViI0UEASQHObGL8GrxOKnJN4jMuYEjoDqCUo22Sl3n9nab07KmmMqDZ7peh45cDIJAQJ+JqCtH0jREy7mUPJLXvIO+UXfMN87h0+ZJCo5tRFRpcZgLUYfUQtT5OmfZKg2OgkwkUyG2nFQcxgIEZASNDn3jnpivnUBQqlDo7tQ/B/Z7y1krLAgYLx8n/+gG18JY6hfOc1V6B5KzZym798g8qh/PlF6P/iY5zf8LtbV/Ju6g6+ahuHr1KsHBwXh5eQEwf/58mjZtyuED+/CL/heOdoMxXT2JNiIadUgtiuJ/xHr7Cp71O6H0CXLN4szJ59HVaoOqUiiWWxfJ2fslgU9OI33lZCSrkVmrdtG+YY1S/lp/JSVB19fXl6KiIgIDSwtnWywW9u/fz8GDB/n8nIkt8RkVznRL+v8lmwVR4wlA3sHl+LQdjPnqCWRZQvTwRraYqBrdArFyDSSpdFQK6DO+1HtVpRDX65IOLXVQNbBbuLRxMalXLuFRozW+7Z5Cbj2QlIXDEJQaBIXSeVMozu8KSjWmK3HY89Op9MgIPKo3x5Z3Gxx2Z4WJbxCy3Uroi4ud0ok5qWR+NwuFZyV82w9BlmV0tdog6nyQLQYQRMw3zuIw5OFZrxPIMmqVClW9RxjaOvL/TW3tn4k76Lp5KO52/83MzGT9+vUsW7aMsWPHUsV6k8yQDmhC6wBOK5m8gysIGjwTdWjtUjNXbXgDNFXqURD3A4aLP1F5wFQUnpWoMmY5ttzbXP7hP9Sss4g+j/VgypQpLk3fvwp/f3/sdjtarbbcxbS1a9fSsGFDlEol3787jNTUW0imAtI3vItkMeIoyKTw9A40d9nKyBYjQvGqfMjz852P4Ee/xZ59C5VPACjVZFhUBMqUagaoCMliLNUSq1WKvNw2gs7PzOZIYjLzz4vYJDBdO4k2vAE+bQfjMOYXizJIGBIO4tdjNKJahz0vDaVfFcy/niZ48EwyvpuNd+MeZO/8DEQFKZ8NQ7ZbELV6lw+b9z1Si7Jc/rCtDonE24VAxXKa/9dqa/9M3EHXzUNxd7nY4sWL6d+/P1OnTmXevHnMmzcPx8lvoclAJIeNrM1znI0DooKszR/gWb+Lq7rBknaF7G0f41GjJZrQOmRsmnXXo7gDr1ptaFnVh13fL+fgwYM0bNiQiRMn0rNnz78k7SAIAlFRUciyXKZsTJZlYmJimDNnDnXq1GHz5u9o1603sm8wlQe8g+naSSy3LmBOTnB5vtkLslxlXLLNQta2eXi3GoC+YTdM10+jiWiIKiACJDu27GQchnxsubewZd6gUpcRZbrKADI2zkBXszXeLZ9AoxSZ2vuOtkCTJk3wOXadaav2krN7MZ51Ozhtyq2m4nOQsGZcQ1Cp0QTXRFR7YE1NxHLrIlm7PsNRlEv+sU1oIhoQ2PcNCk/twHI7ySVqBM76WkQFacsnINzVEOJMr9iKHUQAWWbFkRVM63HcVX3wf7229s/EHXTdPBTx8fE8+eSTmM1mFi1axPPPP09wcDADBgxg1KhRiOI1qkQ/woVv56Jv3MOZxwV8Oz9P+topSKZC9I26o64c5cxJBlf8h1i7cRjrPnsfrVbL+vXreeutt5g0aRITJ05kyJAhaDR/7gypJMVw70x3//792Gw2evTowZEjRxg5ciQ9XppC7PI7MoJK3xD8arUhfe3beDXrg6jW4RHVFHteGpZbF6nU7UU0wTUoiPsB8/XThDz3MbeXT0DpUxl7TgqWtCv4tOyPtmojZJsZQaEvNYaCuB9QePpiTDqCJqIBbdq2LJX/dDgctKhkobkmnbzmfbAX5aH0rkzuvq9BEPBq8hghz88nY+MM59hqtEAdWocqr63CmppExnezkW1mbJk3uPHh44gaTySrEdOV4y6NWtlhw7/nGNeCnmtsJ7ei8PB2pheK6dc47P9ludefgTvounkozp8/z4wZM1i1ahX169fnyy+/5PDhw3z00UcUFhZSt25dLq2YgmfLgXg1uhN0VZVCCRo8g7TVbzlnsk0ew3DhINm7Fjitz4sfgV3trrLEynUSnvEDmDVrFs8++yxDhw5l3759zJ07lylTpvDqq68yatSoCk0pH5aoqCiuXr1aZqYbExPDuHHjSE1N5b333mPNmjUI/pHs/vojZMnu+s+jegsqPzkdQ+JhvFsNQLZZQBQJHPAOuhotnLY6aZdR6HwQlCpCRnxKxrqp6Jv0xvHzWvSNupc7LkPiYQwXDhL09PtIpgIyNs7gkGMUH5nOcPn8ac6ePUtCQgJ+fn4EBgbiI2nJMMo4TPmo/ELxqNUGe14agqhAttuwpCQ4zSBtFhxFuU4DS60eTVhd7IWZIDmci4AqDZqwugQ+PrnUeHJ/Won52imX5KI9NxVBqaHw9E4ARFkiLr4+DN5Q5lzcuIOumweQVWRh48kUEtMKyDNYyKv7OPvTlCz8bClhAT6MHDmSuLg4Fi1ahK+vL4mJiXQc9T5J2rIasCr/cCo/OY2CuM1Oi5lHRrh+ZrhwkMIzsQQ/874rd/lE41BmDb7TFCEIAl27dqVr164kJCTw8ccfU7NmTZ5++mnGjx9PjRo1ynznwxAVFYXNZis1001KSuKXX35hw4YNeHh4EBsbiyzLTJ8+neB6LcHTB2Xjnq7t1UHVnAtcgFCcf9XVaAGAZ90O6Gq3RVCqMd+MJ2//NwhqLbl7lmLLTuHWkpGIOh+QJAIHTCV93VT0DbthTPyZyk9OQ1RrEdVaAvu/Tcb3H7DgbAhdm9YiKiqKoqIiUlNTadasGU0DArh27RqWGzuJ1/mC5MCYeBhBpUHpUxnJmI+gVGNNvUT+0W+d4xUE9I16YEjYj6MgC4/qLZBl534lCmUl9cuVOj4LxfZAtuwUsrZ8hNIvDF3ttnjWaY9GKfLDm4/8of8X/59x2/W4KZezyXksPHCFg0mZAFjuWnVWiWCz2ZBuneeN3g2ZNf5F9u/fT6dOzsfLSV/F8nVcOha7RPraKfh2fr7UAtO9WG4nkfXDhwQOfBd1QAS3l0/Ap+UTKApS6Rxkp0ePHvTo0YOQkJAy+6alpfHZZ5+xdOlS2rdvz6RJk2jbtu1D532ziizMWLmbHw7GUbNeQxrUrk6dYG9OfPsZQT46Zs+eDTjzuxMmTGDHjh2YTCaaPz2eC5o6WGxSmaa7e7HnZ2BIPIwgKvBq1gd7QSbZW+dhy0tDtpnx6/oing27IQgiltQk0tb8G12NVggKpbNF13VOMir/CBy5tzD/eopWrVpRqVIlUlNTuXTpEl5eXhgMBsxmM9WfeJ0cmwJr5nUEhQpL6iVkmwWPas3wbtXflUe/teRFKnUZTtb2GESNJyEjFmC6/AsFx79D1Oio9OjLZG2ZR+VB01H5BiPZLBSd3onhwkEC/jUBpW8IWVvnIogKug8ezqZ3nvtbS/7+adzPrscddN2UYdWx67/Zrly2WRne2JvpQ7uh1+sxm83EHjjCC1tvg6gkbfW/qdRleIXuB6brZ8j9cSmB/aeg8q+CLDmw3r5MxoZpfPHll0jmImJjY9m7dy/h4eGuANy+fftSOV2DwcCyZcuIiYkhICCAiRMn0q9fP5dUZEXcfXORZalYitGJRilgNlvoXCuQCT0b0CDUi5deeolDhw6Rk5PDwoULad26NWPe/ZCztmDUkU1QKhSlyqLu7m5zmAqxpl0me+cCwl7+gqLz+yg88YOz+sGQizowEsliRBvVFEQFhvg9eDXrg2Qz41mnQ6myMQQBKf0KkTd30bx5c6Kjo/Hx8WHjxo3s3r2bevXqMW3aNILqtmTQ50dIXj8TpZc/lbq+iGyzkB37Gb7tn0HlH4414zq3l41D6R2Awrsy/j1Go/KvguV2EhnfvkfJL4GmSj0C+08hZ9cCTNdO4lm/Cz6tB5b2KbtyDP3FH8hITeH06dNUrVr1vtf//yvuoOvmN+MMuBdLdRJVhOnqCUSdD74RtXn7sboMa1cNtVqNn58fPn3ewORfk7SVk/HtPAxteFlTScliJPnTISh03ij0fggKNYJSjajxINTPi/wrp4iPjycoKAi73U5cXByxsbHExsaSkJBAx44dXUG4Zs2aTrsYh4MtW7Ywb948UlNTGTduHCNGjECvdwaG7OxsfHx8UCqVD7y5lARMQQCNUqRyymFu7F2FKIqsWbOG7du3s3jxYsaMGcPkyZMxSiJzNx3m4JkrJGflo6pSv4wkI+CyNso/+i2iVo/o4YUl5QKVuowg9YtX0IRHo6vRgtz936AJr4fx0hEUej9EdemGjc79nyN24Ttcv36dmTNnsmXLFsaNG8drr73mqqMG6PTCVK75NERRXDNc5jwlB6Yrx/Go1hxB6Wx4UIrOdI7NUfbCOAx5iB5eZbzL7nZryM7O/tNy7f8XcRtTuqmQRx55hPT0dDw8PDBZHVzLMiDdFYFkhx1BVBAy/BMAcg8sQxvZBI/IRhguHERTpR6mkJpM23wGVVB1gtRWLly4QL32j6Ht/W+Cn/2owu8WNTrCX19bSmEK7vTfOzJ/JSgoCAClUkmbNm1o06YN06dPJycnhz179hAbG8ucOXNQqVSuANy1a1f69evHsWPHmDdvHjNmzHA5I/Tt25c1a9YQl6tx3Vzyfl6LICrxafNkqXEYL/6E8cpxAvu+gdkmccmgwS7omD5hNP3796ddu3acOXMGs9nMnDlzWLlyJTqdjiFDhiB26cHXcelYywlaICPbbdhyUzHfOAd2KwgCllsXkSUJpV8ImvD6CGqtU5M2qBq+7YegvcsZt+jnNagtebz66qusW7eO0aNHk5SURKVKlUp90zvvvMPhZR8wdVksK84XIaFAEEvfCARR4Srlu7s7DCj3pqTwLF2VUF5H2X9zwH0Q7qD7X45KpWL16tU0btyYl1aeIGvLFuwF2Xg17QWAPS+dzC13LMl1tdqQsXEmgf3fRrZbUHo7O7ckUUmldk/RTErg0qVLqItuM7V3Pd7fef9Zc9mAe1f/fZWKlcX8/PwYNGgQgwYNQpZlEhISiI2NZfHixTz33HM0adKEHj168Oabb/LBBx+wYMECoqOjUSqV7D15kQWJWlL3LEMTVgdBoSoza5PtNvJ/Xod/73EUnd+HrmZrRI0nFn0w879a7Ry7KDJo0CCuXbvG008/zfz589m8eTNTpkwBptz3ut+c2w+PWm2dAkFWI4JChaMo19nMIN2tV1B+XtQhSez79mtGvzSSxMTEMh10AKtWrWL27Nl8+eWXNGsYyPx3x1Nv4HjSxUAEZBzcOeeKusPcHWV/Pu6g+1+OSqVyenBlF3DgUgb2olwchlzAWZcpy9KdpgWHHXVwDQL6TkLpXRmHsQCFZ8nMSkAT1ZQAs4HNmzfzxBNP8GybSOLi4tiSrHQKqfxF/feCINCgQQMaNGjAxIkTMRqN/PTTT8TGxvLss8+SlZVFt27dmD59Oh999BFTPv4Sr/ZDsKZdQVertVNWUnDa5eCwIyhV5O77Cs/6ndGE1sb06yly932JvmF3TFfiyK/VDEtREYWFhTRt2pSqVauyYcMG1q5dS7Vq1ejcuTMpYZ0x+ZQ+j5x9XyGqNBgS9qMOroEtOxl9094U/rIJXZ322LJT0EQ0pPD0DgwXD+HIS8NQlINkKiB71wJXS7HTvv4q06dPZ9q0aeVekyNHjjBs2DAmTZrEiBEjeOyxx7BnXGPDa48yYtRr1Os9AtEv7IHdYe6Osj8fd9B1Q0ZGBr37DybHLGMvygFRgelqHLLDhnerga7tCuI2O00ni4OwLeM6WTvuKpR32PnGVEBUtyF8Ou5p0tLSWD97DJ+s2syBdBV7L6ZjsVgQ77LUVgoyCoXiT50t6XQ6evbsSc+ePYmJieHmzZusWbOG2bNnk52bj4e/jaLz+7GmXyMndpGrMsBwfh8K70D8e71G4antKHwqUxS/B0Ghwl6Yhco/Ao+ardD3HIt9+Rj27t1LYmIisiyTl5dHcHAwlStXJjo6mgTvRpzOLS0EL4gipqtxhL64xFlv+9375B9aiaBQUXRmFwq9H5ZbTiUyUaNHluwIsuzUHNb5ElKcqlEr4NcP+6HTle+Se/PmTR555BF69+7Nhx9+yLFjxzh69Ch9+/alSpUqnDr6Eyu+WFRuNUhFuDvK/jzcC2n/5fTp04dZs2ax7JLM5jOpZH7/PtqqjUulF7K2zSN46Iel9rNmXCdr60eEvrDwzmfp18je8QlBQz9EoVQip8Tjc+sYXRpVR6VSYZaVLD+URHh0K2wo0akExPzbDOtUB1+tArVajUqlKvNveZ9V9K8oli8fGBsby/bt29m+/2csTZ4i78xuJGMelZ+cTv4v3yGICrxbPO7a3pZzC4WXv8v/rKTFNW3FRHS126HMuwG5KXzwwQc0bNiQBg0alFq8WnLwKjF7kkqV2mXvXoy2Sn086zn1ZG8vG4/C0xfP6K4UxP1A5X5vOy3KtXrntdz5CeHj1mPNuIbKvwrGS0ewZSXz4dy5/Pvx5uTl5ZU5T6PRSHh4OGFhYZw9exZBEOjSpQtnz55l7969eHt707lzZ5KTkx/q98TNw+FeSHPzQArMdswpF4odHARsObeo1Pn5Crcvit+DrnZ7cvZ+gTa8AbpabbAXZqHwDkRUaZABOawhhvCG5OszqavKwmq1UhT3PQrTZZSCQLXq1Tl69Cjxut5YrVZsNtsD/33QNgqFotxAbTabUalUZFsV+Hv6o6vR0tW8UO71OLYJc0oCotoDyWZGXbkafj1G49/rNUSdL11qBbJwVK8yC1clDGxWhZg9SYAzgGd+NxuHMR/T1RNYbifh13UkKv8wlJVCMV87iWQuJO/IOvy7j0K2W8nc8hEKL38cxjyyNv+HkOGfIIhKFGpNhXleSZJo0qQJSqWSuLg4BEFg7969XLx4kUaNGtGkSRPWrl1Ly5YVC5O7+etxB1032Gw2ru5bT+6Pmwkc+C4q32ByD64gbdVkAv41scz21vRrGC/9TOgLC7HlppK1dS7mG+dQBYS7FtbA+ThtB45ZQuja1Sn1FxMTQ2hoKFFRUcyePZvIyEg+//zzCmeoD4MsyzgcDlcQNplMJCcnc/PmTW7cuEFycjKfr98KOE0Vcw8sI3ffV0imQhAEiuL3og6sSsC/JiIoVWirNkLlF4Y9PwPJXIgt8zqGCz/h32c8ydfi2LEDhgwZUu5YAvQaOtUK5MeL6aj8wggduYic3YvRRjZGlhykfjkaR1EuSr/bKCuFoQ6oik+bQUhmA+kb3kVUabGbCjBeOoKo8SRrWwyedTsgIbgUvO6lZ8+eJCcnc/XqVTQaDbIs8/bbb+Ph4cGkSZMAOH78uDvo/i/jDrpuUCqVVKsSQupzc7ApnI/TlTo9h61+F5dQdQn2vHQyN/8Hv0dfQdTo0ATXIOT5T3AYcik6uxuFd9lVdJNNYvaORBpW8cXf35+MjAyqV6+On58f/v7+XLlyhVq1apXZ70EYDAZXQL1582ap1zdu3OD27dsEBAQQERFBREQEVatWRaW8s2JfqfPzVOr8fLnpBQClbxCqwKogiFjTihBEJZbURNJXv0Vwiza0b//Cfcf3aucaHLqchcl2p+Oi6NyPaKs2IvjZuRguHMSeexvfLsPJWDfVqXfg6YsmpBYKvR9F5/ciWQz49RiNqdgFAqDAbCvzXWPGjGHfvn0cP37clavdunUrmZmZaLVaHnvMaRB6/PhxZs2a9dDX2s2fhzvo/pdjs9l46qmnUGm0JGcUlarRBZyr+cWP4cYrceTsXoRPu6fQ1WwFQPrat7HlpiGqNE47b50PhoT9SOYitOENXDNls91BzJ4kdM0eJwcdJ3SRjFt/mtCuw/jp+OkyQVeWZTIyMkoF0XsDq8FgKBVQIyIi6Natm+t9WFgYarWahIQEtm3bxvbt2zHk56CX7b/p2hSd3e1KL2hCnB116spRVBk4hRHdaxMREXHf/RuF+zKlVx3eXfEjGT+twXj5F7xb9cereV8EQUBdORJj0hEKT25FUHu4Os58OwxFUKow3ziHNqwu6pCaqENqucSDvLWlb4SfffYZixYt4ttvv6Vp06aAM9UwdepU/Pz8eOWVVxBFEZvNxtmzZ2nWrNlvOn83fw3uoPtfjs1mY/369a463R8vppcq7bLnpZP5/ftIVjOFcZvx7/EqHtXvWh9QqFD6VMaWk4JHjVb493odUaWh6NwezCkJrs1kGWetZ0R7EJWkA5vPpCL6N2F2PKyYsoqgrDPkXj3DzZs3SU5ORq/Xu4JpREQEkZGRdOzY0fVZYGBguflNk8nEgQMHmDdvHtu2bUMURfr06cOUKVN4e+o75CqUSA47CELZ+txizVgZ8Os+Co/IxlhuXaTw9C7X+SIIDGxahd69e/Ppp5/eV2hnaOtI8nOa8J/c24gaT9SBka4xq4NrYk3/FUdRbqmFyozvZiMoFFjTrzrt2DUe6Oq0R1CoEJGpE3JnwW7Xrl28/vrrzJ49mwEDBrg+X79+PYIgkJKSwtChQwFISEigatWqf4vRp5uKcQfd/3I2btzo+iMs73FY6Rvk6kYLenp2mf0FQcC7zZN4VCs7exIoGxBlsfSvnFT8/qbkS6p/Jwa16spnbaOIiIiosCSqPFJSUpzVCdu3c+DAARo3bkyfPn3YsWMH9erVcwW6KVOm0Dzci/0Hf6Tw7I+lxMKNl35Gttvw6/kq2J2P8JLFSN7P69AE10TpG4QlOYGCDW/xr706jEYjUVFRDxzbq72a06FhDQYPe5Hsuz43Jh1BshjwatobUaPDfDMeTXh9gp95H4D09e/i3ao/HpFO1wzDxUOg0tKvcShvAhcuXKBv374MGTKEt956y3Vcm83Gu+++S82aNRkwYABarTNldPz4cVq0aPGbr6mbvwZ30P0vx8/Pz/W65HH4t2ovPAj5gbpbdyNglwW+vw716mmpU+f+AdfhcBAXF+dKG9y8eZOePXvy9NNPs2zZslLndTcnT57k9M0cTuVp0Dd+rMLja3q95npd+clpLifbmuNW/i6L8HrBetpU9eK63ofEjF/J/3kdDmM+wc9+ROZ3s9GE1CTzhznOxcmcWziKcrAXZFAYt5mCYxtxFOUQOnIhHllJ7Px+A4Ig0KpVK5o3b87y5ctLfdfy5csJDg7m6NGjpX7mXkT7Z+AOum5KUdIN9ttUxpy514owXvoZer3uem/LS0PlG1zutimfPUeVMSsw2SRmbb9InUAPmlcPKrVNfn4+u3fvZtu2bezcuZOgoCB69+7NggULaN269QMVxcA5C5z71li8rf6Y6jxWqq21IkoC7h+xCO/bty/x8fEsXjOWUYu3o63WDH2xjGNAnwlkfjcbj2rNkWxmcvd/jSakJl6NH0PlXwWVXxUUPoF4qJR09s1l1Kip2O12goODOXjwYKkUi9lsZsaMGXTr1o0GDRqUag8+fvw4r7zySnnDc/M34m6OcFMu51LyKuy5v5us7fOx3Ep0vZcsBiRLsQi4JKEJq+PUiu0PXkQDAAAgAElEQVQ+iszNcwh6enZpicJibi1+oVTlg79eQ0pCHElJSWzfvp1t27YRFxdHhw4d6N27N7179yYyMvKhzsloNDJw4ECUSiXr169nyZ7zzD+Y7KorrghZktCqFLzTp96fYhFenpKbbLeCQlVhDa5WJTK1V11aB9iJjo5GlmXS0tLKWOJ88sknxMbGcuLECQ4fPuxaoDQYDFSuXJnc3FzUavUfPgc398fdHOHmobm3537LmVQuphVwj1M4Ab3HYUm7ApLDpZlrvPwLmrA6ZGyYRvCQ/yBZTWSsf4eAPhNcAdd07ST5R9a7juMw5KHwuqNMlV1gRKf3wtfbi759+zJ+/HgeeeQRPD3Llyd8ELm5ufTp04caNWrw5ZdfolQq2f7JWwzu1o+CKq3YfykTi9kCyjuVASpBRlQoiFAaMJ/6gSEzV/2u776X8p4mBGXFgVCWZaw2iUNXstiwdDl2u50qVaqU6oADKCoq4oMPPmDkyJGoVKpSFSGnTp0iOjraHXD/AbiDrpv7UtJzP6BpFdrN2VeqrRXAYcwn87vZeLXshzqomtOdIPk8eYdWAQKyw07m9++jb9obbUQDZ62pICBZDGgjGuLb0bmynrFpFpU6D0PU+eIozEaU7dj3LiD1+uU/7ECQmppKjx49ePTRR5k7dy6iKLJy5UpycnJ4f9LLKJVK0vIM1O/zAkNGv4HBJnE54SyhOlg46Vm8NSING05jx44d9O7d+w+NpYShrSNdCl57LmZgd0gV2rALgoAExCakIfl35o2lvTj0zfusW7euVHPGp59+SufOnfn222/54osvSh3Dnc/95/DH24Dc/FdQ0mF1d1yQrGYyv5uNvuGjeNZoRdqqyaStfANL6iUkQx627GRufvwkcrG1S9qqyaStegPLrYsgiEgWA3k/rXKmKFITyfh2Bpnfv+8UfwmIpO9bi/9wwL1y5Qrt27fnmWeeYd68eYiiSFZWFm+88Qaff/65Kw+cmXyNytln+fSZZnw1rAUj6ilRXN6Pv16DSqVi7ty5TJw4EZutbGPCb8XhcCDdJdsYHeZD66reGC8ccAXc/GMbkazmCo4ggCSx7vgNKjfsxOuvv+4aT25uLjExMXTq1Alvb286dOhQak930P3n4J7puvnN3F1S5jDmk7FxBtrw+vi2fwaAkGFOS3J7UQ6Fp7ZTeGILCp0PPu2eKnZQEPCIbAQ4y58EhQplpRA8arXGYcjFp/VAtBHOfGXW1rmkDxpR0VB+E2fOnKFXr15Mnz6dl156yfX5G2+8wVNPPUXz5ndSbmfPnqVhwzsi4dHR0Xz88ceu97169eKTTz5hyZIljB079neN54cffmDs2LF4eXmh0WhIvpWKsskTGFIuodd4odD7Ybx0BO9W/QEw34wne9dnTndeh93lLqwOrkGOlx86nwCWLl3KmDFj+Oijj3jiiSdYu3YtkyZNKnOzOn78ODNmzPhd43bz5+IOum5+M3eXlBk1nng16YU+uisA9sIsTJd/wXT9DKLaA014fUSNJ/pG3ZEsRuBOFQA4tXlFDy/X/vqGj5J3aLXThh1Q+gQRUb3O7x7rTz/9xMCBA1m0aBEDB96Rpzxw4AB79+4lISGh1PZnz56lUaNGrvd169bl8uXL2Gw2VCrnAte8efPo2rUrQ4cOrVDo5n7079+fc+fOUadOHSIjI3nujVmYarXFLoH19hWsWTfQRjbCdPk4ulqtnTW7z85FVGud8o/n92O+foaAPuMRBGgSKLJgwTj69evH0qVLWbZsGWPHji3VJAFO6c7c3Fxq1qzYHNTN34c76Lp5KO5eBBIbdnWVlAkKFYJCRUCv1xG1ejK//wDZYcN46YhrX4/qLdDVbguAZC5C9PBySijqfNAE18QWEY0mvD4ekY2x/3qCWkG/b9Fs69atvPDCC6xZs4Zu3bq5Pjebzbz88sssWLCgzCLU2bNnef31O+VtOp2O8PBwkpKSqF+/PuCc/fbr14+ZM2eWmgU/LFOmTEGhVJGuDUdvsyCoNNjybiNbjKj8quAwlkg2Cq6Aey+yDOcz7QSEVmXEiBE8++yzrF69mtdff71M6VxcXBwtWrT4U0SF3Pxx3EHXzUNz9yKQq6RM54O+UXcANAoBvx6jEdUerlX5/GMbSy0UWdOv4tXkMTI2zsC7ZT/MN87i2/E5Mr+bjXb4J1gyrnPwy5mMfXTdQ41txYoVTJ48mW3btpXJYX7wwQfUr1+fxx9/vMx+9850wRlk4+PjXUEXYMaMGdSvX59Ro0b97pnj7NmzOZWjZOnSpaj8w1H5h1MUvxe7Vu+a+QPY89PJ3DjDGXQFAclUiGQ1cXvZOOcGkp1a/Yey8/P3mT59On369OHzzz8v833ufO4/C3fQdfO7eJCNy9Fr2ew/fxN7QSaS2YAx6SiVHnGqcjlMBU4xl4hoVH5VUAdVx3z9LKpKIYQM+xjz1RO0adMa2/kdnDhxolTu9X7ExMQQExPD/v37qVu3bqmfXbx4kUWLFnHmzJky+6WlpWG32wkLCyv1eUnQfeqpp1yfBQUFMWnSJCZPnsz333//sJfNxY0cAw5JvqP1YDMjKJ2OGrLDDqIClW8woSMXufa5O71QQpbpBmFhYbz33nu88MIL5eoqxMXF8fLLL//usbr5c3EHXTd/iIpsXFpH+XPg0BHSv/8IpXcAHtVboAlzBkJLykV0tdugDq6BOqSm0/AxJYHb3zgf7x2GPPQBz7Fi06bf1GUmyzJTp05l06ZNHD58uIz6lyRJvPzyy0ybNq1MYAU4d+4cjRo1KrP41KBBA1auXFlm+3HjxlG3bl32799Ply5dHji+e5k+fToZRgf4VCX3wHIsty7iKMh0WqFfO4HssKFv0JWCU9tczhVA2ZkucMuYz0tDn2TJkiUsWbKk3Gtz/Phxvvrqq4cep5u/BnfQdfOX0Cjcl1kvPsHssNpldBx0NVvhUaNFqYW1KmNWOF84rPhe28vN88fp2LEj33zzDbVr167wexwOB6NHj+bUqVMcOnSoXFfcr7/+GqvVyqhRo8o9RnmpBbgz070XrVbLnDlzmDBhAidOnEChUJTZ5n5Mnz6d769Y2LbqC7w7DEHZdSTp699BMhYQNOQ/ruvi1axPqf3Km+kazu/D01OBv78/hw4dKtOl9+uvv+Lh4fFQfmhu/lrcmXU3fxlDW0cypVddPFSKMnX/dwdcAGQJyWYmIusE7YJkcnNz6dmzJ+3atWPevHk4HA7uxWKxMHjwYK5cucK+ffvKDbjp6em8/fbbfP755xUGx3vLxUqoUaMGaWlpFBaWdWp48skn0el0rFix4j5XoDTnz5/np59+4sMPP+TE+k+xZydjL8jAmnUT2eFA36g7+YfW/ObjyXYLlQQT8+bNY/r06cycOZP0PANLDl5l3PrTjFgex4RvzxHefQTZRZbffFw3fy3uoOvmL2Vo60jWv9SaHvWC0ChFNIp7oq/dCg4bjQNFbDs/5JfVcxEEgeHDh7N06VK++OILtm7dSseOHbl06ZJrt8LCQnr37o0sy+zYsaNMNUIJEyZMYPjw4eUG1RIqmukqFArq1q1bprwMnF1iMTExTJ06laKiot90LfR6PcOHD+fHH3/ks/kfow2thTq4BtnbPsa3/TPomzyG5fYlsnd95jLCLMFy6yLmG2dLSVEqlSpG92qGIAis230URedRtPtwPzF7kth8JpV9iRmcyVORXrk5befs4+VVJzibXNbM0s3fi1vwxs3fRsmiW9zlVHb8uB+lZKXoVhJemQnUjgzj+ZfHMnrucqo0cLoF14wM5+TeLfznpccpzLrN9OnTeeuttxg6dCh9+vShSZMmLF68uMIZbGxsLKNGjeL8+fMVavNaLBZ8fX3Jzc116c7ezbBhw+jQoQMjR44sd/+hQ4cSFRXFzJkzH+pa7Nq1izHvxZDjWRXZYcOntbOWWLJZyPlxCb5tn0Lpe0dlLe/wGqwZv+Lb7mnUQdWQJYnONXw5t+g1Gg8cy95cH0SlurgJpXwEAbRKBVN61flThHvcVMz9BG/cQdfN/wolimHR0dFcSDOgbzUA79qtsVgsiCqNazslEja7g+o6MxN61mfmuJHEx8fz3HPPsXhxxW3CRqOR6OhoFi5cSM+ePSscx+nTp3n22Wc5f/58uT+fO3cuycnJfPLJJ+X+PDk5mcaNG3PmzBnCw8Mf4grA2eQ8Bi4+jE1++FZnwWGj6IdZaENr4dnhWcwPoX/slKis6w68fyFulTE3/zhatGjBt99+y9DpSwl65kUciNgkSgVcADsiglLkmlnBa5uv4dDXpEePUDZu3EitWrV4/fXXy53pzpgxg5YtW9434ELFqYUSoqOj2bFjR4U/Dw8PZ/To0bz11lusWvVwKmQJh3aQ9eM6vDoNK1Wl8EDsVqY/0YgFZ6uS2XCgK+AWHP+eghNbXKVnyA5kh+OOgplkx6N6C/wefdllFPp7tIHd/DHcQdfN/xr5gdEEdn/ZGVgftLEoIiEiNB1Ar971mDtXyYgRI9i0aRPffPNNKRnDc+fO8fXXX5dbeXAvvyXoxsfHI8tyhbPqN998k9q1az9UE8KmTZt48cUXMZvNTJgwnjUXLb9JNB5ZooqXyPVbaaQHNkOpvKMF7N2yH94t+7k2Nd84R8GJLVQeMLXMYcx2B4sOXGHJ0N9WA+3mz8MddN38r3A2OY/ZOxKxI2JMOkbugW+cs73iwCaZnBUDokfxApksI9utVOr2IrO3Q9XBzjrZhQsX0rZtW95++21XG+9LL73E7NmzCQoKKve77+bcuXP3nQ2HhIQgSRIZGRkVHk+v1zNr1izGjx/P4cOHyTZY2XgyhcS0AgrMdry1SuoEe/Nksyr46zVs2bKF4cOHYzKZWL58Oc8+3YXHi0Xjd51LQSGKOIQ7s3dnwAcQQBBJMYksO5mJIrzhQxki3U2JUWh2kQV/vebBO7j503DndN38r1Ce8/DdZG2fj65WG5fVeylkCenmab6f2JtmzZpx9epVRowYgcPhoGvXruzbt4+DBw8+UGtAlmUCAwOJj4+/bx1rp06deOedd0rpONyLw+Gg8SOPE/HYi1wxOB/n79Ye1ipFZKCur8Thpe+Se/UMkydP5oMPPih1nLZduuMZ3ZVsXQR5oncZ0fgHYUw6BqKIrkbL+850S8Y0/tFa5Ta3uPljuHO6bv5RZBVZOJiUWSrgFp37kYITW1zv7bm3saZeKhZDd+LTdjCeddqDICJGNOHx+T/SulEq3VrUY+O2XSyZP5dp06YxefLk+3q3lZCamoooigQHl+/bVkJJiuF+QXdtXDKW9qNIyJVALLuoVWJ3dDpDQtf3bWpnxpUKuIWFhXTs2BEvLy8sRQUUeOq5Mf8Zwl8vW7frMBVi/vUUnvU64SjKRaG/o3hmTbsMCiW6Gs40h/nmOVK/LpaidNjxaf80nnU7usaUeLtsDbKbvxZ3na6bv52NJ1PKfCaZi/Cs34XQEQtQeFYi+Lm5BA58B1HjSeiIBXjUaIlcLBEJgCCirBLNiWyRj3ZdoP2HB9iU4cczY97iyJEjdOrUiaSkpPuOoySf+yCh9Io600oo8TyzOOQHOiALooio0pJTtROrjl13fb5z507UajXKytVJDmiBHRFRqy/3GMakoxiTjiJZjKStfQtr5g1kyYEsOVy6xSVoIxoSOmKB878XF7sCbgkF5t8vyu7m9+EOum7+dhLTCsrY/tyvvvRB2zgQsdgl8nQRnPBtz8g5yxk0aBBt27YlJiam3G42ePAiWgnR0dFlSsoGDx7Mzp07Xblpk00iJ3YhhacrrnSQJQeFp3ciyxImm8TsHYmcS3E2K3z55ZeMHTuWZALIO7apzPlKNrPrGAW/fIdvhyHYcm5RqdMwzNfPYLp6gttfj6XgxBaK7jOGe/HWlpWNdPPX4g66bv52Csz2v+bAoojZJjFjy3l+VVThk08+YfXq1bRt27bcWe9vDbr169fnwoULpax2NBqnjc+CfZcozEzBYcxHG9kE2WLCYczHlpdW1nZHEDEk7Kfw5HbgTgVBYmIie/bs4aIUQoHCC1tuqnN7WSL/2EZSvxpD4YmtABSe2o49JwWVfziG+L1IpkK8WzyOrmYrQkcuQt+g62+7geHM6dYJKb+Tz81fhzun6+Zvx1v75/zaFZ7egflGPIFPvFnqczsi398Q2LdpPaaCApKTk6lduza+weEEt3kCVWAkSp0X6fZqFJ3LxrhsNdXCKlO5cmWCgoIICAgopW7m4+ODv78/165do3r16thsNkRRJNdgZv+ZDG6vfANBVNw1ru3IdhuBA6airVLP9bkgCPh1e5m01W+iq9kKpU9l9lxM54ePJiCLCpb/fBXJasKafpX0tVNwFGYjqDR4VGuKICqwZl6n6NweBLWH84Ci+D/t3Xl0k2W+wPHv+77JmzTdl3SnFNmkLLLoXLgugIAwDNXjgOKC6MwoKLggMFyPcx09Os4iMszljN7LeEVhQOEMjAe5Iso2KIsiMMg6IGuBNikpWdqkWd7l/hEa2lJA5nJL4Tyfv942afIm6fmdN8/zWxIB1jQNznWUb3m5xDQN0LVE3q4JjOlb/H/9GITLJIKu0OpuzE/DZnGdv8RwmSRFRW4IQM3JFgJF/ana/DlFvf4VtXc5ofRSQpwbd27tXMg+U2fvfnBs2Yu59/d4Dm7H6/WSmZmZCMJ5eXnIsswrr7xCWVkZc+bMIRAI8NGKlVjKhtLumYXUH95G8MAmckY+hx6uQ2m2HmsaOtGq71ALu5A79jUs6bkABKuOUFNVgb1dD7wbFhCrOYGSnEnOPTNwLfw30vqV49u0GGQFdJ2sYROpXnr+rLPIib3UfDoHTBMj5OfUn55M3Hbu2MTUYhQ+8TaKamdwV6dIF7sKRNAVWt2YfsXMXtP0675pnFt3Tek5BCU5E0mxkvYvo4lUHSRadRA5KY3Kd59GstqQZAU96MOIhogtnHF2cGOYnPLpqHk3gCSjtOvFrJW7mLPuEGHdQGqhBMOQFJAgmNUJ6x2dmPJsOpOH9yIcDuN2u3G73VRXV+N2uzl27BgQn5+2ceNGHP2GkHLbw0RO/QP/138lZ9RU6g9vo+bz/6TwZ28hq3bqdq/FiIZI6X4nrj9Pp2TGcuzF8b7Cmr8a34b5OMe8zJlVfyRj0GNofjfBPetRHOlAvOG7XuvBUlyGmn/h1C57SU+KJr6D5nPj+Z9Z5I9746Kfgd2iMGlQp+/1eQlXlgi6QqtrGOfeJE/X0ECO/zsmlw1M3NfR6RbOrH2HcMVuMu4YT/ot50bt1O1aQ+TkPrJHPtvi80RjGrNWH8Cg6Y5+AyMaRlYbym8lYibM3VrNb377IOHdq1EUBUmSME0TTdPQdZ3NmzcjSRKGYeDdvhJrh35417+HEa6jeslLxLyV5I19Db2uBjmriPoj21DzOsLZ7mDB/V8QPrKDnPJpWNJzkSSJup2r4mfQfC3W0Agf34Wa24HksoHx8/C7wdCo3fHJ5b/xZ8V7L9woSoCvEhF0haui8Th3gPQB91/wvukD7ifj1oeQ7Zc3qFK2WGm8gBHzuahZMYv8R2Zi6hqn5j5Ou2ea9kuQrHZyhk7Ac/Rrenbrit1up76+nsoztZw4episYRMJbF6CPTkNW1E3and+Rv64N9CDXtxLXiZ7xNPEvJX4Nn1I3oOvE3UfJbXPyERamiRbEgE4XLGH8Im91B/ZjqSouP/yMtqZShzdbgdAScslsOUvIMn4Nn2IZLFhSc/F1DVingoMLXpZ74foMtY2iKArXBWNx7k3nyzRnOJIp/bvK6n7dnW8n6wkYWpRoq7DoCgE//HluTubRjy/VZLJGvIEkkXFt3ERksWGqceI1ZzEtegFIJ4b3HBsalFS+5WT0mMwKFZS80tZsGABQVsOf1i9H/fBasyZo/H+7X0wTbQ6L44BD5B1w82EK3ZTs+ot0gfch5rbgdN/fZ28cW+gBzxovirU/M7xuWcQn4lmGBjhIGBib38TyTfeRu3OT8n+0fO4FkzHCNdhmgaymkTa7Q9jK7oR15+nk3nn49jbdafi9/eROexJvGuaDqHUgz6i7sPIzTbSGqrhBnd1MmlQJ3GFe5WJoCtcNY3HuV+q2Utqn5Gk9hmZ+Dl4YAuej36Nmtcx/rW8WaDRAqcBSOp4M0kd49WYkcoDBPd/QdaQJwDwrHiTzKETUJLODXPUQ370kJ8aX4CbRj1GxpDHsaRkAxJKSjZFE+aCLFOzcg6yRUWrPop33Tycd/8cQ4tSvfRVZHsKksWK7veR0nsEsmonfCLeCN27fh4YBq7qo9hLb8IIB0nuPojabz/HjIZBsSKrSbjmTyPmrSR25iSy6sBW2AV7u/hUYlPXQNfimQuNOqxFTu0jtnUxP37gpzh7FzUZFDqmb7HYNGsjRO8F4arbdbbZS2Kc+yWyGoxomKr5zyNJEoWPv0310leRVAfOu6cDENi2IpGSBeBdN4+kLgMI7l6No8sAgvu/JKXXXVhzS3HNf57CJ/4rkfIV3LeB2h0riZ4+ijWzkKTO/Ql8vQxrVlGj568HwyBr+FMkdeiLHvIT+GopoUPf4Lz3BUIHthA6sIm8B19PbIiZWoyKN+/F1r4X1vR8skc+i2fVHwnuWoOaW5p47OjpY5RMW4YkK7iX/JLY6WPo9bVY0s812zGjISSrnaKJTa90k6wKSyb0F1eybYDovSC0aS2Nc/fURdh02HNewxdTi+FZ/jscXQfElxeAjME/o+rdydTd0A9HlwHUbv+YlJ5DEn+T3PNOgvu+QFKsmLqGbE/BXtKDut1rwYxf8WIYpPQeQXLZQJLLBuJa9ALZI5/F1GKE9m1o0jKxdudnRN2HMXWNSOUBqpe9RmqfkRT85D+QrTZUZymmHsOI1ieCrmSxYskqJnJ8FxFpD3V71oEkoRZ0puCRmYnHPvn2TxPHRriO3PtfpXrZa+Q/8kbiitzzyR+wZjfNrxWbY9cOEXSFNqP5OPfmncj0kJ/qpa9ixiIoabnEak5yau4E9JA//pX/k9n4Ny9BDwVwL/4FlowCnPfMwDV/Kmp+JzSfi/CJeDnvmdVziXkqcI55ifrD32CE/NgKu57Npz2IHvThWT6TlJvuii9dNCp+kBQFS0Z+oqlM8VPvIVmaltNmDhx/3utL6tAHLbMAJTkT2ZGGbHPEK84aGtIAet2ZxLHmd2NJc5LS404CWz8ic+CjaAEP4SPbE0skYnPs2iOCrtBmNc9wkO0pWLOKsDpLAbAXl5E9aiqSJOFaOIPkskHIjjR8Xyyk4NHZicdRUnNwjn4J/5cLsZX0QrYl4d+0hKjrEJa0XMxoGDW/E7LNQd3utfH+CYZOzt3TMbUY3nXv4tu0OJGBoAdqUNKygXiVV/OA25KI6xD1R/9Oxq1jCR/fTeagx4hUfUek8mCT1osNV7oxbyWSRUW2J5P2g3upmv88yV1vw/u390jrPwbVkYIiS2Jz7Bokgq7QZjXPcJBkhZxRU4H4uq01px2uBVORZAtRz3HYux4kCT1wGvfCn2PoOtk/mgKSjHfNn9BDPmI1J7HmdkDN74StsCuhA5uIeSoSaVrJPQaT0nNIPKtBklBzSymZtpTgvg3UfPYWxU/Nixc8nM0wqHpvCrn3/RJLas65EzdNZAmMRrnBaQUdsI15kQ4WHzsqLv3aQwe3YG8f7wsh2xxkj3gG16IZqAVdSb+lnMmDOjJ+QKnYHLsGiaArtGkXynCoP7SV9FvHkj7gfkxDp/K/J1EwfiZ2i4L3/cmkPzqrUZmxiRY4jepsjyUjn/oj21FzO5B+24O4P3wRMxZBzSkBmhYo6EEfpz/6DZKsoPlcmLEIrg9exKgPYOoaVmcpSR1vxr/xA7J/2KhAQ5LoVpBGl7zUZhkEw1n36cf8+56viEqAaTTtd0t8ecGMhqndsZKc8mmYpkH4+C78Gz/A3r430eojpO5czNCHXhAB9xolgq7Q5o3rX0qv4oxEhkOk6jti3kpsRfFy2tDWZSS378nwsjwmDerEfUssTSveTBPnj1/E9+UiLFnFJDsyiFUfjfeg1WIgK4lm4EY0TNR1CL2uBktqDgXjZ2HqGiff/gmWjHzyH/o1dbvXotcHcHT+AUmlvTn1zkTSvFVYM89Nn8hPtzN7bO/zXkskEqFztp3DFoV6XcNe0uu85QXN78berjsxTwWe5b9Dze9Mxh2PYC/piTVay83hrxg2bBh9+vRh5cqVl+wHLLQtIugK14TGGQ4LNuTzVclvSWlfwLGNyzni/pb1a1ZTWugEIBAINF0PNvT4zr8WQ/NVEdyzHvsNfXG9P4XUfuXINgdV7z9H1vDJJHXoS+22j0np/cNEylntzlXYS3oS8xyPp4sRvyKWFCuSYiWl51ACXy8je8TTifO9UJ/a0aNHU15ezor9Xn61IorqnNLk9uJJ8wDIGTUVPeTH0fVWlLNz4pKsMr+4pz/j+j+APmcWXq9XBNxrkMjTFa550WgUVVXP+33DRIc6vzeRutXAiNaj+atRne0B0GprUBzpWK0WQEI7m6tmmiaV7zxF1l1PklQav3INfLMcI1xHxu0Px//W58a7/l2c974IfP/ZY/Hzu3RhiMhQuPaIPF3hutZSwIWLV7zJalIi4AJY07KxWxSeG9KJ2Wu+SwRdSZIoGP/mBUfnAFgy8hIBF75/n9rmyybNC0NE+e71SQRd4br2zwS2HRW+JvnBjQNu/ZHtRE7tR81vuS2iJHFZfWpbKgwR5bvXNxF0heve5Qa25vnBjYWPf4tsc5DcfXCLz/XP9qltXhgiXL/Emq4gtKBhPfhSHdAai5fidhPrroJY0xWEy3U5HdDERpdwOUTQFYQLEBtdwv8HEXQF4SLERpdwpYmgKwjfg9joEq4U+dJ3EQRBEK4UEXQFQRBakQi6giAIreiiebqSJJ0Gjrfe6QiCIFwX2pum6WzphosGXUEQBOHKEssLgsBeLH8AAAAlSURBVCAIrUgEXUEQhFYkgq4gCEIrEkFXEAShFYmgKwiC0Ir+F0BznPZ04fPIAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "networkx.draw_networkx(keywords_graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task3 在Pycharm里边合并代码，合并成一个单独的函数，实现输入一篇文章，输出该文本的摘要流程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用词向量进行自动摘要"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q8. 使用词向量进行自动摘要的基本假设是什么？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hint('a.53e5.5b50.5411.91cf.80fd.591f.8861.91cf.53e5.5b50.4e4b.95f4.7684.76f8.4f3c.5ea6.ff0c.6545.800c.53ef.4ee5.901a.8fc7.8be5.65b9.6cd5.5224.65ad.67d0.4e2a.53e5.5b50.662f.5426.548c.6587.672c.542b.4e49.76f8.5173.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task4. 使用普林斯顿2017年的sentence embedding方法，进行句子embedding的构建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 480,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sentence_embedding(sentence):\n",
    "    # weight = alpah/(alpah + p) \n",
    "    # alpha is a parameter, 1e-3 ~ 1e-5\n",
    "    alpha = 1e-4\n",
    "    \n",
    "    global frequency\n",
    "    \n",
    "    max_fre = max(frequency.values())\n",
    "    \n",
    "    sentence_vec = np.zeros_like(model.wv['测试'])\n",
    "     \n",
    "    words = cut_sentence_to_words(sentence)\n",
    "    words = [w for w in words if w in model.wv]\n",
    "\n",
    "    for w in words:\n",
    "        weight = alpha / (alpha + frequency.get(w, max_fre))\n",
    "        sentence_vec += weight * model.wv[w]\n",
    "    \n",
    "    sentence_vec /= len(words)\n",
    "    \n",
    "    # Skip the PCA\n",
    "    return sentence_vec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 481,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.3649808 ,  0.13979061,  0.84194344,  0.363532  , -0.53035325,\n",
       "       -0.7233682 ,  0.04611822, -0.03226246,  0.67258793,  0.17196766,\n",
       "        0.2617024 ,  0.6023036 ,  0.23560154,  0.5922899 ,  0.40102386,\n",
       "       -0.5442358 , -0.11515176, -0.19699991,  0.41195402, -0.26182294,\n",
       "        0.37422746,  0.81174916,  0.30886763, -0.19084352, -0.04166068,\n",
       "        0.08061183, -0.38324925,  0.1455623 , -0.02084506,  0.13884391,\n",
       "       -0.24170098,  0.36772013,  0.6822229 ,  0.16970088,  0.11711059],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 481,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentence_embedding(split_sentence(df['content'][0])[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 334,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sentence_sim(sentence_list):\n",
    "    sim_mat = np.zeros([len(sentence_list), len(sentence_list)])\n",
    "    \n",
    "    for i in range(len(sentence_list)):\n",
    "        for j in range(len(sentence_list)):\n",
    "            if i != j:\n",
    "                sim_mat[i][j] = cosine(sentence_embedding(sentence_list[i]).reshape(1,35), sentence_embedding(sentence_list[j]).reshape(1,35))\n",
    "    return sim_mat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 484,
   "metadata": {},
   "outputs": [],
   "source": [
    "sentence_list = split_sentence(df['content'][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 485,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/体验版内测，稳定版暂不受影响），以确保工程师可以集中全部精力进行系统优化工作',\n",
       " '有人猜测这也是将精力主要用到MIUI 9的研发之中',\n",
       " 'MIUI 8去年5月发布，距今已有一年有余，也是时候更新换代了',\n",
       " '当然，关于MIUI 9的确切信息，我们还是等待官方消息']"
      ]
     },
     "execution_count": 485,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentence_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 486,
   "metadata": {},
   "outputs": [],
   "source": [
    "sent_sim = sentence_sim(sentence_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 487,
   "metadata": {},
   "outputs": [],
   "source": [
    "nx_graph = networkx.from_numpy_array(sent_sim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 488,
   "metadata": {},
   "outputs": [],
   "source": [
    "scores = networkx.pagerank(nx_graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 489,
   "metadata": {},
   "outputs": [],
   "source": [
    "ranked_sentences = sorted(((scores[i], s) for i, s in enumerate(sentence_list)), reverse=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 490,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第1条摘要：\n",
      "\n",
      " 此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/体验版内测，稳定版暂不受影响），以确保工程师可以集中全部精力进行系统优化工作 \n",
      "\n",
      "第2条摘要：\n",
      "\n",
      " MIUI 8去年5月发布，距今已有一年有余，也是时候更新换代了 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "sn = 2\n",
    "for i in range(sn):\n",
    "    print(\"第\" + str(i + 1) + \"条摘要：\\n\\n\", ranked_sentences[i][1], '\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test news"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 494,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第1条摘要：\n",
      "\n",
      " 因为嫌疑人未满14周岁，无法进入刑事司法程序，当地公安机关已依法对其收容教养 \n",
      "\n",
      "第2条摘要：\n",
      "\n",
      " 1993年2月的一天，利物浦10岁小男孩罗伯特和乔恩翘了课，在商场闲逛，和很多淘气孩子一样搞破坏，直到两岁的詹姆斯出现 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "news = '1993年2月的一天，利物浦10岁小男孩罗伯特和乔恩翘了课，在商场闲逛，和很多淘气孩子一样搞破坏，直到两岁的詹姆斯出现。他俩拐走了詹姆斯，并在当天傍晚杀害了这个可怜的幼儿。法医在詹姆斯身上发现残忍虐打的证据，以及42处伤口。两个10岁孩子甚至还把詹姆斯的尸体放在铁轨上，制造事故假象。经过一番波折，罗伯特和乔恩最终被判刑15年，但服刑8年之后，二人就获释了。短片《羁押》高度还原了罗伯特和乔恩当初接受审讯的情景，两个孩子都极力将罪责推给另一个人，罗伯特冷酷镇定，乔恩则试图利用未成年的身份博取同情。这种与年龄不符的冷酷与“心机”，在前几天少年杀害女童的案件中，也能感受得到。10月20日，东北一13岁少年将小区里一个10岁女童骗至家中，残忍杀害后抛尸。媒体披露了嫌疑人在同学群中的聊天截图， 他谈论这起凶案，一面强调自己未成年，一面疑似释放“自己只是路过、不小心留下不利证据”的信号。这样的言辞让人不禁脊背一凉，这是怎样的冷漠与冷血？因为嫌疑人未满14周岁，无法进入刑事司法程序，当地公安机关已依法对其收容教养。这类恶性案件，总会引发“是否应该降低刑事责任年龄”的讨论。女儿被残忍杀害，嫌疑人却没有接受刑罚，这是父母难以承受之重。悲剧发生时，降低刑责年龄几乎是以一种正义解决方案的面目出现的。降低刑事责任年龄，对我国来说是否必要且可行，这在学界和社会各界都已经争论了许久。'\n",
    "\n",
    "sentences = split_sentence(news)\n",
    "\n",
    "sent_sim = sentence_sim(sentences)\n",
    "nx_graph = networkx.from_numpy_array(sent_sim)\n",
    "scores = networkx.pagerank(nx_graph)\n",
    "ranked_sentences = sorted(((scores[i], s) for i, s in enumerate(sentences)), reverse=True)\n",
    "sn = 2\n",
    "for i in range(sn):\n",
    "    print(\"第\" + str(i + 1) + \"条摘要：\\n\\n\", ranked_sentences[i][1], '\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 492,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['1993年2月的一天，利物浦10岁小男孩罗伯特和乔恩翘了课，在商场闲逛，和很多淘气孩子一样搞破坏，直到两岁的詹姆斯出现',\n",
       " '他俩拐走了詹姆斯，并在当天傍晚杀害了这个可怜的幼儿',\n",
       " '法医在詹姆斯身上发现残忍虐打的证据，以及42处伤口',\n",
       " '两个10岁孩子甚至还把詹姆斯的尸体放在铁轨上，制造事故假象',\n",
       " '经过一番波折，罗伯特和乔恩最终被判刑15年，但服刑8年之后，二人就获释了',\n",
       " '短片《羁押》高度还原了罗伯特和乔恩当初接受审讯的情景，两个孩子都极力将罪责推给另一个人，罗伯特冷酷镇定，乔恩则试图利用未成年的身份博取同情',\n",
       " '这种与年龄不符的冷酷与“心机”，在前几天少年杀害女童的案件中，也能感受得到',\n",
       " '10月20日，东北一13岁少年将小区里一个10岁女童骗至家中，残忍杀害后抛尸',\n",
       " '媒体披露了嫌疑人在同学群中的聊天截图， 他谈论这起凶案，一面强调自己未成年，一面疑似释放“自己只是路过、不小心留下不利证据”的信号',\n",
       " '这样的言辞让人不禁脊背一凉，这是怎样的冷漠与冷血',\n",
       " '因为嫌疑人未满14周岁，无法进入刑事司法程序，当地公安机关已依法对其收容教养',\n",
       " '这类恶性案件，总会引发“是否应该降低刑事责任年龄”的讨论',\n",
       " '女儿被残忍杀害，嫌疑人却没有接受刑罚，这是父母难以承受之重',\n",
       " '悲剧发生时，降低刑责年龄几乎是以一种正义解决方案的面目出现的',\n",
       " '降低刑事责任年龄，对我国来说是否必要且可行，这在学界和社会各界都已经争论了许久']"
      ]
     },
     "execution_count": 492,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentences"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q9. 该句子embedding的原理是什么，有什么优势？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示：频率，重要性，快速，性能好\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63d0.793a.ff1a.9891.7387.ff0c.91cd.8981.6027.ff0c.5feb.901f.ff0c.6027.80fd.597d.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q10. embedding是什么？ 用数学的方式解释embedding。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 496,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示：假设两个entity保持具有某种“偏序”特性，即，可以比较，那么，将这两个 entity 投影到另外的空间中，在该空间中，这种“偏序”依然能够保持\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63d0.793a.ff1a.5047.8bbe.4e24.4e2a.65.6e.74.69.74.79.4fdd.6301.5177.6709.67d0.79cd.201c.504f.5e8f.201d.7279.6027.ff0c.5373.ff0c.53ef.4ee5.6bd4.8f83.ff0c.90a3.4e48.ff0c.5c06.8fd9.4e24.4e2a.20.65.6e.74.69.74.79.20.6295.5f71.5230.53e6.5916.7684.7a7a.95f4.4e2d.ff0c.5728.8be5.7a7a.95f4.4e2d.ff0c.8fd9.79cd.201c.504f.5e8f.201d.4f9d.7136.80fd.591f.4fdd.6301.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q11. 除了word embedding， sentence embedding， embedding还可以应用到哪些场景？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 495,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "例如社交网络里边人员的embedding（进行好友推荐）， 购物网站商品的embedding（进行商品推荐）\n",
      "另外，可以思考一下基于这种embedding的推荐的优点在哪里？ \n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.4f8b.5982.793e.4ea4.7f51.7edc.91cc.8fb9.4eba.5458.7684.65.6d.62.65.64.64.69.6e.67.ff08.8fdb.884c.597d.53cb.63a8.8350.ff09.ff0c.20.8d2d.7269.7f51.7ad9.5546.54c1.7684.65.6d.62.65.64.64.69.6e.67.ff08.8fdb.884c.5546.54c1.63a8.8350.ff09.a.53e6.5916.ff0c.53ef.4ee5.601d.8003.4e00.4e0b.57fa.4e8e.8fd9.79cd.65.6d.62.65.64.64.69.6e.67.7684.63a8.8350.7684.4f18.70b9.5728.54ea.91cc.ff1f.20.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q12. 这种embedding的方法和tfidf有何异同？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 497,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示：tfidf考虑的频率其 tf 和 idf 分别是什么？ 该embedding的频率类似于什么？ \n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63d0.793a.ff1a.74.66.69.64.66.8003.8651.7684.9891.7387.5176.20.74.66.20.548c.20.69.64.66.20.5206.522b.662f.4ec0.4e48.ff1f.20.8be5.65.6d.62.65.64.64.69.6e.67.7684.9891.7387.7c7b.4f3c.4e8e.4ec0.4e48.ff1f.20.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q13. 构建句子想了的过程中，面对未知的单词，如果解决？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 498,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "开发型问题，可以省略，可以赋予随机值，可以给一特定值，具体情况需要经过试验进行分析\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.5f00.53d1.578b.95ee.9898.ff0c.53ef.4ee5.7701.7565.ff0c.53ef.4ee5.8d4b.4e88.968f.673a.503c.ff0c.53ef.4ee5.7ed9.4e00.7279.5b9a.503c.ff0c.5177.4f53.60c5.51b5.9700.8981.7ecf.8fc7.8bd5.9a8c.8fdb.884c.5206.6790.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q14. 构建完成句子向量之后，句子相似度如何判断？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 499,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "cosine， 余弦距离\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63.6f.73.69.6e.65.ff0c.20.4f59.5f26.8ddd.79bb.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q15. 为什么要用cosine距离进行判断，为何不用欧几里得？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 500,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示：请参考word2vec训练时候的的概率分布的定义，可以看到其loss当时优化的就是 exp(v1 . v2), 那么当 v1 . v2最大的时候，\n",
      "就是这两个向量方向一致的时候，所以，该词向量在训练的时候的loss的衡量，就是依据方向进行的。 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63d0.793a.ff1a.8bf7.53c2.8003.77.6f.72.64.32.76.65.63.8bad.7ec3.65f6.5019.7684.7684.6982.7387.5206.5e03.7684.5b9a.4e49.ff0c.53ef.4ee5.770b.5230.5176.6c.6f.73.73.5f53.65f6.4f18.5316.7684.5c31.662f.20.65.78.70.28.76.31.20.2e.20.76.32.29.2c.20.90a3.4e48.5f53.20.76.31.20.2e.20.76.32.6700.5927.7684.65f6.5019.ff0c.a.5c31.662f.8fd9.4e24.4e2a.5411.91cf.65b9.5411.4e00.81f4.7684.65f6.5019.ff0c.6240.4ee5.ff0c.8be5.8bcd.5411.91cf.5728.8bad.7ec3.7684.65f6.5019.7684.6c.6f.73.73.7684.8861.91cf.ff0c.5c31.662f.4f9d.636e.65b9.5411.8fdb.884c.7684.3002.20.a')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 501,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "另外，也不是不能用欧几里得，但是依据上一提示之分析，欧几里得是不能很好保持语义相似性的。 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.53e6.5916.ff0c.4e5f.4e0d.662f.4e0d.80fd.7528.6b27.51e0.91cc.5f97.ff0c.4f46.662f.4f9d.636e.4e0a.4e00.63d0.793a.4e4b.5206.6790.ff0c.6b27.51e0.91cc.5f97.662f.4e0d.80fd.5f88.597d.4fdd.6301.8bed.4e49.76f8.4f3c.6027.7684.3002.20.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q16. cosine距离的时候，如果两个向量的长度区别很大，但是方向类似，cosine的距离是小还是大？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 502,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cosine只考虑“方向“是否一样\n"
     ]
    }
   ],
   "source": [
    "hint('63.6f.73.69.6e.65.53ea.8003.8651.201c.65b9.5411.201c.662f.5426.4e00.6837')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task15 基于Sentene Embedding 在pycharm里边完成句子摘要的完整过程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q17. 找出几个句子进行plot， 解释其与全文的相关性的排序"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请阐述："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q18. 不同类型的文章，例如时政，财经，社会，故事，其相关性分布有何区别？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请阐述："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 503,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示：可以从其分布的密度，分布变化等趋势进行观察。\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.63d0.793a.ff1a.53ef.4ee5.4ece.5176.5206.5e03.7684.5bc6.5ea6.ff0c.5206.5e03.53d8.5316.7b49.8d8b.52bf.8fdb.884c.89c2.5bdf.3002.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## More Added Feature"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### KNN思想"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "例如，当我们有一个列表是 [1, 1, 2, 3, 8, 1, 2]的时候，其中的 8 数值太大，这在我们的摘要中的表现为，该句子周围的句子都是不那么相关的，但是该句子单独的相关性很高。 那么，如果把这个句子摘录进来，就会导致“不通顺”. 我们可以采用KNN的思想，将这个列表进行重新计算，让它每一个元素的值，等于自己的值和周围的几个值的一个计算结果。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q19. 如何使用KNN思想进行“平滑”操作? 请代码实现"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答：\n",
    "\n",
    "`请补全代码：`\n",
    "```\n",
    "L = []\n",
    "def knn_smooth(): pass\n",
    "\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 504,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "#一个可以的solution是：\n",
      "\n",
      "L = [1, 2, 3, 4, 10, 1, 2]\n",
      "window = 3\n",
      "\n",
      "L = [np.mean(L[i-window:i+window]) for i in range(len(L))]\n",
      "# 当然，这里的np.mean是一种最简单的平均化方法，我们还可以考虑其他的例如距离加权，等方法\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.23.4e00.4e2a.53ef.4ee5.7684.73.6f.6c.75.74.69.6f.6e.662f.ff1a.a.a.4c.20.3d.20.5b.31.2c.20.32.2c.20.33.2c.20.34.2c.20.31.30.2c.20.31.2c.20.32.5d.a.77.69.6e.64.6f.77.20.3d.20.33.a.a.4c.20.3d.20.5b.6e.70.2e.6d.65.61.6e.28.4c.5b.69.2d.77.69.6e.64.6f.77.3a.69.2b.77.69.6e.64.6f.77.5d.29.20.66.6f.72.20.69.20.69.6e.20.72.61.6e.67.65.28.6c.65.6e.28.4c.29.29.5d.a.23.20.5f53.7136.ff0c.8fd9.91cc.7684.6e.70.2e.6d.65.61.6e.662f.4e00.79cd.6700.7b80.5355.7684.5e73.5747.5316.65b9.6cd5.ff0c.6211.4eec.8fd8.53ef.4ee5.8003.8651.5176.4ed6.7684.4f8b.5982.8ddd.79bb.52a0.6743.ff0c.7b49.65b9.6cd5.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Title 标题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果该文本有标题，那么标题可以帮助我们很多。在之前，我们计算每个句子与文章整体的相似度是对每个子句与整体文章进行相似度距离计算，那么，我们这个时候，就可以把标题的embedding结果拿出来，那么每句话的相似度就是这句话与整体文章的相似度和标题的相似度的一个“结合”。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Q20. 请代码实现这一思路。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回答："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 505,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "title = 'some words'\n",
      "content = 'more and more words'\n",
      "sentene_vec_title = get_sentence_vec(title)\n",
      "sentene_vec_content = get_sentence_vec(content)\n",
      "#对于一个子句 sub_sen_n, 以前的similarity是 cosine(get_sentene_vec(sub_sen_n), sentene_vec_content)\n",
      "#现在可以是\n",
      "p = 0.5\n",
      "sen_vec = get_sentene_vec(sub_sen_n)\n",
      "similarity = p * cosine(sen_vec, sentene_vec_title) + (1 - p) * cosine(sen_vec, sentene_vec_content)\n",
      "# 当然，这里的p以及p和cosine的构建都是可以变化的。 p 和 1-p是线性关系，可以是其他的关系。自己定即可\n",
      "\n"
     ]
    }
   ],
   "source": [
    "hint('a.74.69.74.6c.65.20.3d.20.27.73.6f.6d.65.20.77.6f.72.64.73.27.a.63.6f.6e.74.65.6e.74.20.3d.20.27.6d.6f.72.65.20.61.6e.64.20.6d.6f.72.65.20.77.6f.72.64.73.27.a.73.65.6e.74.65.6e.65.5f.76.65.63.5f.74.69.74.6c.65.20.3d.20.67.65.74.5f.73.65.6e.74.65.6e.63.65.5f.76.65.63.28.74.69.74.6c.65.29.a.73.65.6e.74.65.6e.65.5f.76.65.63.5f.63.6f.6e.74.65.6e.74.20.3d.20.67.65.74.5f.73.65.6e.74.65.6e.63.65.5f.76.65.63.28.63.6f.6e.74.65.6e.74.29.a.23.5bf9.4e8e.4e00.4e2a.5b50.53e5.20.73.75.62.5f.73.65.6e.5f.6e.2c.20.4ee5.524d.7684.73.69.6d.69.6c.61.72.69.74.79.662f.20.63.6f.73.69.6e.65.28.67.65.74.5f.73.65.6e.74.65.6e.65.5f.76.65.63.28.73.75.62.5f.73.65.6e.5f.6e.29.2c.20.73.65.6e.74.65.6e.65.5f.76.65.63.5f.63.6f.6e.74.65.6e.74.29.a.23.73b0.5728.53ef.4ee5.662f.a.70.20.3d.20.30.2e.35.a.73.65.6e.5f.76.65.63.20.3d.20.67.65.74.5f.73.65.6e.74.65.6e.65.5f.76.65.63.28.73.75.62.5f.73.65.6e.5f.6e.29.a.73.69.6d.69.6c.61.72.69.74.79.20.3d.20.70.20.2a.20.63.6f.73.69.6e.65.28.73.65.6e.5f.76.65.63.2c.20.73.65.6e.74.65.6e.65.5f.76.65.63.5f.74.69.74.6c.65.29.20.2b.20.28.31.20.2d.20.70.29.20.2a.20.63.6f.73.69.6e.65.28.73.65.6e.5f.76.65.63.2c.20.73.65.6e.74.65.6e.65.5f.76.65.63.5f.63.6f.6e.74.65.6e.74.29.a.23.20.5f53.7136.ff0c.8fd9.91cc.7684.70.4ee5.53ca.70.548c.63.6f.73.69.6e.65.7684.6784.5efa.90fd.662f.53ef.4ee5.53d8.5316.7684.3002.20.70.20.548c.20.31.2d.70.662f.7ebf.6027.5173.7cfb.ff0c.53ef.4ee5.662f.5176.4ed6.7684.5173.7cfb.3002.81ea.5df1.5b9a.5373.53ef.a')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Keywords 关键字"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对整篇文章提取关键字，该关键字可以通过TextRank或者tfidf或者gensim自带的包进行提取。 然后对包含了关键词的句子进行手动加权"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task 请代码实现"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Position 位置信息"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于句子而言，如果其出现在段落开端，结尾，是否是重要的？ 请做实验证明之，并且代码进行改进。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task 加入位置信息的考量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Topic 主题信息"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自学Gensim LDA的使用方法，对于文章获得其主题，然后依据主题对每个句子进行判断，每个句子是否和该主题相关。 \n",
    "参考网站： \n",
    "1. Google Search： Gensim LDA\n",
    "2. https://github.com/xiaoyichao/-python-gensim-LDA-/blob/master/topicmodel3.py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Task 合并以上功能，实现一个单独的函数，该函数接受一个长文本和字数限制，输出一个短文中"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Questions 思考题："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 除了Sentence Embedding和TextRank, 还有什么方案？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. 为什么这个课题不用Seq2Seq?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. 深度学习、机器学习与NLP之间的关系是什么？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4. 你还有什么其他的思考和心得？ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 最后一步： 使用Flask、Bottle、Bootstrap变成一个网络应用并且部署在服务器上，这样别人就可以直接通过网址访问你的应用啦。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
